Forum Replies Created
-
AuthorPosts
-
TCountParticipant
Только вот это спасло…Но это ведь не дело.
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;
TCountParticipant'Support' wrote:Спасибо за демку
В 11.17 проблема осталась. Очень жаль 🙁
P.S. Кстати, если после смещения фона посмотреть sSkinProvider.OffsetX…он выдает 80! вместо начальных 8.
TCountParticipant'Pokroops' wrote:Наблюдаю странность:
У меня несколько очень похожих проектов, использующих общий код.
skin manager находится в этом общем коде, соответственно все его настройки для всех проектов одинаковы.
Однако, в некоторых проектах ChangeSysColors работает (а именно, цвет выделенного текста меняется с голубого на серый),
а в других проектах этого не происходит, selection отстаётся голубым.
Возникает вопрос: что, помимо настроек skin manager'а, может тут влиять? Куда смотреть?
Думается мне, у вас разные скины в проектах…
Если так, то стоит в редакторе скинов открыть тот скин, на котором не происходит изменения цвета выделения.
Открыв такой скин, обратите внимание на секцию SELECTION, во вкладке Active/Hot которой должен быть установлен нужный цвет Color.
TCountParticipant'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;
TCountParticipant'Support' wrote:Примеры их использования можно найти в этой демке: http://www.alphaskins.com/sfiles/demos/alphahints.zip
Только что я перекомпилировал и проверил, в демке это работает…
Теперь понятно. Я же не знал, что с включенным свойством Animated такой фокус не работает 🙂
Оказывается, нужно просто отключать анимацию при показе подобного рода подсказок, а потом включать или нет по надобности.
Спасибо.
TCountParticipant'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});Они должны работать.
Должны, но не работают.
TCountParticipantСделал демку.
И пока делал ее, похоже, нашел, в чем кроется загадка.
Если в SkinProvider формы отключить прорисовку рамок формы (DrawNonClientArea), то будут наблюдаться лаги. Если же прорисовка рамок включена, то все OK.
В демке по умолчанию прорисовка рамок отключена.
Баг ловим так:
1. Запускаем Exe.
2. Жмем кнопку на форме “Свернуть форму”. Именно ее, потому что сворачивание формы из заголовка работает нормально.
3. После разворачиваем форму, кликнув по иконке проги в панели задач.
4. Наблюдаем смещение фона.
TCountParticipant'Support' wrote:Желательна демка для изучения. Это возможно?
Да, скоро сделаю.
TCountParticipantВ чем же все-таки волшебство масок? :wacko:
Обратите внимание на две маски, они практически идентичны. Разница только в том, что в маске справа верхний правый угол – 1 пиксель цвета Fuchsia.
Казалось бы, что обе маски должны работать. Однако, из двух масок правильно работает только правая маска…
Так в чем же волшебство одного единственного fuchsia-пикселя?
P.S. Поправьте это недоразумение, пожалуйста. Я не в первый раз замечаю данную неувязочку и поэтому не могу полноценно реализовать свои идеи по созданию скинов для программ.
TCountParticipantВот я и попробовал AC 11.14. Взял Ваш проект, изменил скин на AutumnSky (для лучшей видимости проблемы) и…первые 2 вызова формы – нормально, третье – как на скрине)
TCountParticipant'hoop' wrote:У меня, описанный Вами эффект не наблюдается (AlphaControls v11.14, Delphi 10.1). Набросал тестовое приложение. А Вы случайно, на PopUpForm-у, не забыли поместить TsSkinProvider? Если этого объекта нет, то в прорисовке формы появляются проблемы даже с использованием методов Show и ShowModal, я об этом писал разработчикам недавно, но эту тему я уже удалил (что-то связанное с активацией скинированной формы).
Про SkinProvider не забыл, однако, не пробовал AC 11.14. Думаю, стоит попробовать)
TCountParticipantВобщем, проверил я все…
Все проблемы начинаются, если использовать вшитый скин (Internal).
Не знаю, что там делается, но это влияет на мою прогу.
Причем у меня форма со скином создается динамически и потом уничтожается. И даже после ее уничтожения вместе со SkinManager проблема никуда не уходит.
P.S. Проблема решилась путем динамической загрузки скина из ресурсов.
TCountParticipant'Sha' wrote:Тогда непонятно, при чем тут этот файл, если он не имеет отношения к формам?
Без него все работает?
Формы показываются?
Все работает прекрасно, файл не битый и загружается легко и быстро, НО ЕСЛИ SkinManager инициализируется ДО загрузки этого файла.
То есть:
1. SkinManager.Active=True – функция загрузки файла где-то на середине виснет.
2. SkinManager.Active=False – функция загрузки файла работает как надо.
Но в этой функции нет обращений к SkinManager.
Ща я попробую на пустом проекте. Кину SkinManager и функцию загрузки файла и гляну, что и как.
TCountParticipant'Sha' wrote:Скорее всего, что-то не так в логике (например, нет привязки скин-менеджеру и т.п.)
Но файл, который загружается, он никаким образом не относится к SkinManager) Это просто массив картинок PNG и описание к ним)
Если этот файл не загружать – все норм)
TCountParticipant'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) не загружать файл, а автоматом перезапускать саму прогу (что тоже как-то несерьезно).
TCountParticipant'Sha' wrote:В вашем случае можно разместить единственный TsSkinManager на TDataModule.
Хммм…У меня даже такой практики нет) Не подскажите, где можно инфу найти по этому поводу?
TCountParticipant'Diezko' wrote:Если не секрет,как вы делаете другую форму главной?
Вовсе не секрет)
procedure SetAsMainForm(aForm: TForm);
var P:Pointer;
begin
P:=@Application.Mainform;
Pointer(P^):=aForm;
end;
TCountParticipant'Support' wrote:Странные вещи описаны… демка желательна )
Постараюсь сделать)
TCountParticipant'Support' wrote:SpeedButtons не принимают фокус.
Не принимают, но и не теряют почему-то)
Простой эксперимент:
На форме кнопка sSpeedButton и PopupMenu. PopupMenu вызывается при нажатии правой кнопкой мыши по кнопке.
При этом происходит следующее – открывается меню, а кнопка остается в активном состоянии. Все бы хорошо, да только
от активного состояния кнопки уже никак не избавиться) Куда бы я не переводил фокус – у sSpeedButton остается активный внешний вид.
Единственное, когда этот внешний вид пропадает – это либо навести курсор на эту же кнопку, либо на любую другую sSpeedButton.
Вообще, беда с этими sSpeedButton…Например, проблемы с выводом OuterEffects на этих этого вида кнопках, а также непрорисовка в некоторых случаях – когда вместо кнопки появляется белый прямоугольник. Вобщем, беда.
Поэтому я заменил эти sSpeedButton на sBitBtn.
P.S. По поводу фокуса…помогает только комбинация: enabled=false, а потом enabled=true.
TCountParticipant'Support' wrote:Постараюсь поправить это в ближайшем релизе.
В версии 11.10 работает!
-
AuthorPosts