Forum Replies Created
-
AuthorPosts
-
TCount
ParticipantТолько вот это спасло…Но это ведь не дело.
procedure TForm49.FormPaint(Sender: TObject);
var x: integer;
begin
X:=8-sSkinProvider1.OffsetX;
BitBlt(Canvas.Handle,X,0,Width,Height,Fon.Canvas.Handle,0,0,srcCopy);
end;
TCount
Participant'Support' wrote:Спасибо за демку
В 11.17 проблема осталась. Очень жаль 🙁
P.S. Кстати, если после смещения фона посмотреть sSkinProvider.OffsetX…он выдает 80! вместо начальных 8.
TCount
Participant'Pokroops' wrote:Наблюдаю странность:
У меня несколько очень похожих проектов, использующих общий код.
skin manager находится в этом общем коде, соответственно все его настройки для всех проектов одинаковы.
Однако, в некоторых проектах ChangeSysColors работает (а именно, цвет выделенного текста меняется с голубого на серый),
а в других проектах этого не происходит, selection отстаётся голубым.
Возникает вопрос: что, помимо настроек skin manager'а, может тут влиять? Куда смотреть?
Думается мне, у вас разные скины в проектах…
Если так, то стоит в редакторе скинов открыть тот скин, на котором не происходит изменения цвета выделения.
Открыв такой скин, обратите внимание на секцию SELECTION, во вкладке Active/Hot которой должен быть установлен нужный цвет Color.
TCount
Participant'Pokroops' wrote:Здравствуйте!
А как же при помощи панелей удалось сделать скруглённые углы у окна?
Это уже не при помощи панелей, а путем обрезания углов самой формы с помощью регионов.
Например, вот так:
procedure SetRNG(const F: TForm);
var RNG: HRGN;
begin
RNG:=CreateRoundRectRgn(0,0,F.Width+1,F.Height+1,11,11);
SetWindowRgn(F.Handle,RNG,True);
DeleteObject(RNG);
end;
TCount
Participant'Support' wrote:Примеры их использования можно найти в этой демке: http://www.alphaskins.com/sfiles/demos/alphahints.zip
Только что я перекомпилировал и проверил, в демке это работает…
Теперь понятно. Я же не знал, что с включенным свойством Animated такой фокус не работает 🙂
Оказывается, нужно просто отключать анимацию при показе подобного рода подсказок, а потом включать или нет по надобности.
Спасибо.
TCount
Participant'Support' wrote:В модуле sVCLUtils есть две функции:
Code:function acShowHintWnd(HintText: string; Pos: TPoint): {$IFDEF TNTUNICODE}TTntHintWindow{$ELSE}THintWindow{$ENDIF};
procedure acHideHintWnd(var Wnd: {$IFDEF TNTUNICODE}TTntHintWindow{$ELSE}THintWindow{$ENDIF});Они должны работать.
Должны, но не работают.
TCount
ParticipantСделал демку.
И пока делал ее, похоже, нашел, в чем кроется загадка.
Если в SkinProvider формы отключить прорисовку рамок формы (DrawNonClientArea), то будут наблюдаться лаги. Если же прорисовка рамок включена, то все OK.
В демке по умолчанию прорисовка рамок отключена.
Баг ловим так:
1. Запускаем Exe.
2. Жмем кнопку на форме “Свернуть форму”. Именно ее, потому что сворачивание формы из заголовка работает нормально.
3. После разворачиваем форму, кликнув по иконке проги в панели задач.
4. Наблюдаем смещение фона.
TCount
Participant'Support' wrote:Желательна демка для изучения. Это возможно?
Да, скоро сделаю.
TCount
ParticipantВ чем же все-таки волшебство масок? :wacko:
Обратите внимание на две маски, они практически идентичны. Разница только в том, что в маске справа верхний правый угол – 1 пиксель цвета Fuchsia.
Казалось бы, что обе маски должны работать. Однако, из двух масок правильно работает только правая маска…
Так в чем же волшебство одного единственного fuchsia-пикселя?
P.S. Поправьте это недоразумение, пожалуйста. Я не в первый раз замечаю данную неувязочку и поэтому не могу полноценно реализовать свои идеи по созданию скинов для программ.
TCount
ParticipantВот я и попробовал AC 11.14. Взял Ваш проект, изменил скин на AutumnSky (для лучшей видимости проблемы) и…первые 2 вызова формы – нормально, третье – как на скрине)
TCount
Participant'hoop' wrote:У меня, описанный Вами эффект не наблюдается (AlphaControls v11.14, Delphi 10.1). Набросал тестовое приложение. А Вы случайно, на PopUpForm-у, не забыли поместить TsSkinProvider? Если этого объекта нет, то в прорисовке формы появляются проблемы даже с использованием методов Show и ShowModal, я об этом писал разработчикам недавно, но эту тему я уже удалил (что-то связанное с активацией скинированной формы).
Про SkinProvider не забыл, однако, не пробовал AC 11.14. Думаю, стоит попробовать)
TCount
ParticipantВобщем, проверил я все…
Все проблемы начинаются, если использовать вшитый скин (Internal).
Не знаю, что там делается, но это влияет на мою прогу.
Причем у меня форма со скином создается динамически и потом уничтожается. И даже после ее уничтожения вместе со SkinManager проблема никуда не уходит.
P.S. Проблема решилась путем динамической загрузки скина из ресурсов.
TCount
Participant'Sha' wrote:Тогда непонятно, при чем тут этот файл, если он не имеет отношения к формам?
Без него все работает?
Формы показываются?
Все работает прекрасно, файл не битый и загружается легко и быстро, НО ЕСЛИ SkinManager инициализируется ДО загрузки этого файла.
То есть:
1. SkinManager.Active=True – функция загрузки файла где-то на середине виснет.
2. SkinManager.Active=False – функция загрузки файла работает как надо.
Но в этой функции нет обращений к SkinManager.
Ща я попробую на пустом проекте. Кину SkinManager и функцию загрузки файла и гляну, что и как.
TCount
Participant'Sha' wrote:Скорее всего, что-то не так в логике (например, нет привязки скин-менеджеру и т.п.)
Но файл, который загружается, он никаким образом не относится к SkinManager) Это просто массив картинок PNG и описание к ним)
Если этот файл не загружать – все норм)
TCount
Participant'Sha' wrote:0. Сделать копию всех файлов вашего проекта и отложить в сторонку на всякий случай.
1. Добавить TDataModule в проект: File->New->DataModule
2. Открыть файл проекта (.dpr) и переставить в нем строчку создания TDataModule сразу после Application.Initialize
3. Скопипастить TsSkinManager с вашей главной формы на форму TDataModule
4. Удалить все другие скин-менеджеры
Полезная штука, только это не помогло. Похоже, что дело не в 2х SkinManager, а в том, что он вообще инициализируется))
Мои исследования показали, что весь процесс зависает на загрузке ресурсов из файла для работы программы.
Если отключить SkinManager или вообще его удалить перед загрузкой этого файла, то все нормально. Но если SkinManager создается ДО загрузки этого файла, то беда)
Ума не приложу, при чем здесь мой файл, который загружает всякие строки и картинки, и SkinManager. :wacko:
Я вижу два варианта решения:
1. Загружать файл сразу после инициализации Application (но как-то это не камильфо, если прога вообще не будет в итоге запущена).
2. После активации проги (первая форма со SkinManager) не загружать файл, а автоматом перезапускать саму прогу (что тоже как-то несерьезно).
TCount
Participant'Sha' wrote:В вашем случае можно разместить единственный TsSkinManager на TDataModule.
Хммм…У меня даже такой практики нет) Не подскажите, где можно инфу найти по этому поводу?
TCount
Participant'Diezko' wrote:Если не секрет,как вы делаете другую форму главной?
Вовсе не секрет)
procedure SetAsMainForm(aForm: TForm);
var P:Pointer;
begin
P:=@Application.Mainform;
Pointer(P^):=aForm;
end;
TCount
Participant'Support' wrote:Странные вещи описаны… демка желательна )
Постараюсь сделать)
TCount
Participant'Support' wrote:SpeedButtons не принимают фокус.
Не принимают, но и не теряют почему-то)
Простой эксперимент:
На форме кнопка sSpeedButton и PopupMenu. PopupMenu вызывается при нажатии правой кнопкой мыши по кнопке.
При этом происходит следующее – открывается меню, а кнопка остается в активном состоянии. Все бы хорошо, да только
от активного состояния кнопки уже никак не избавиться) Куда бы я не переводил фокус – у sSpeedButton остается активный внешний вид.
Единственное, когда этот внешний вид пропадает – это либо навести курсор на эту же кнопку, либо на любую другую sSpeedButton.
Вообще, беда с этими sSpeedButton…Например, проблемы с выводом OuterEffects на этих этого вида кнопках, а также непрорисовка в некоторых случаях – когда вместо кнопки появляется белый прямоугольник. Вобщем, беда.
Поэтому я заменил эти sSpeedButton на sBitBtn.
P.S. По поводу фокуса…помогает только комбинация: enabled=false, а потом enabled=true.
TCount
Participant'Support' wrote:Постараюсь поправить это в ближайшем релизе.
В версии 11.10 работает!
-
AuthorPosts