Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > VCL Styles как узнать цвет формы


Автор: кмс 2.11.2014, 15:11
В одном проекте попробовал родные скины, вроде нормально, есть парочку приятных smile
Но у меня для некоторых форм включен TransparentColor где TransparentColorValue цвет формы.
А как теперь определить цвет формы который устанавливает скин?

Автор: Illusion Dolphin 2.11.2014, 20:13
Если мы говорим про VCL стили, то там нет цвета формы, там есть элемент window и есть функция для его рисования, и итоге может получиться и не solid цвет, а градиент, мозаика итд. Рисуется форма (основа):
Код

  LDetails: TThemedElementDetails;
  LDetails.Element := teWindow;
  LDetails.Part := 0;
  GetWindowRect(Handle, WindowRect);
  StyleServices.DrawElement(Canvas.Handle, LDetails, Rect(0, 0, WindowRect.Width, WindowRect.Height));


Но можете попробовать StyleServices.GetStyleColor(scWindow), хотя это не универсальное решение.

Автор: кмс 2.11.2014, 22:49
Illusion Dolphin, спасибо, попробую.

Я пробовал методом тыка через TCustomStyleServices но у меня ошибка выскакивала.
Примерно так
Код

var
Fcolor: TCustomStyleServices;
clr: integer;
..........

clr := Fcolor.GetStyleColor(scPanel); //Тут ошибка была.


Но мне нужно именно универсальный способ. Не знаю как поведет себя этот скин на разных системах с разными настройками стилей винды.

Автор: кмс 3.11.2014, 18:26
Я просто сглупил smile
У меня форма(bsNone) прозрачная, на ней просто Image с gif анимацией, на всю форуму.
Так зачем ей нужны стили, просто отключил для этой формы, сделал форму белой, и для прозрачности тоже установил белы цвет smile
Без стиля и гифка стала лучше смотреться smile


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)