Настройка VCL стиля на контролах и формах

Posted by on in Blogs

Свойство StyleElements


В Delphi XE3 появилась возможность гибко настроить применение  стиля к различным элементам контролов: цвету шрифта, клиентcкой части,  рамке и скролбарам. Для этого было добавлено свойство TControl.StyleElements = set of (seFont, seClient, seBorder).   В разных  контролах свойство может работать по-разному, в зависимости  от сложности самого контрола и логики его работы.   Данное свойство можно применять как в режиме проектирования,  так и в режиме выполнения приложения.

По умолчанию все элементы включены:



Пример настройки стиля в  TMemo:



Также можно использовать, например,  TForm.StyleElements = TForm.StyleElements  - [seBorder] для отключения применения стиля к рамке конкретной формы.

Глобальное  включение и отключение стилизации рамки формы в приложении


Для глобального отключения стилизации рамки форм в Delphi XE3 было добавлено свойство TStyleManager.FormBorderStyle = (fbsCurrentStyle, fbsSystemStyle).   Значение  fbsCurrentStyle  означает,  что форма будет имееть рамку от текущего стиля, а fbsSystemStyle -  форма будет имееть всегда системную рамку.   Вы можете применить это свойство,  добавив соответствующий код в Project Source или в режиме работы приложения.  По умолчанию стоит значение fbsCurrentStyle.

Например, для отключения стилизованной рамки используйте следующий код в Project Source:

Application.Initialize;
Application.MainFormOnTaskbar := True;
...
TStyleManager.FormBorderStyle :=  fbsSystemStyle;
...
TStyleManager.TrySetStyle('Carbon');
Application.CreateForm(TForm1, Form1);
Application.Run;

Включение эффектов


В Delphi XE3, при активном стиле, вы можете использовать фэйдинг эффект на кнопках класса TButton и TBitBtn. Для этого было добавлено свойство TStyleManager.AnimationOnControls. Вы можете включить это свойство, добавив соответсвующий код в Project Source или в режиме работы приложения. Для этого эффекта VCL использует системные функции, таким образом сама анимация происходит за счет возможностей системы и доступна в ОС начиная с Windows Vista. По-умоланию стоит значение False.

Пример включения данного свойства в Project Source:

Application.Initialize;
...
TStyleManager.AnimationOnControls := True
...
TStyleManager.TrySetStyle('Carbon');
Application.CreateForm(TForm1, Form1);
Application.Run;

Взаимодействие и синхронизация стилей TRibbon и VCL стилей


В Delphi XE3 вы можете создать приложение в едином с TRibbon стиле. Для этого были созданы 3 специальных стиля Luna, Obsidian и Silver, а также добавлено взаимодействие TRibbon с TForm при активном стиле (TRibbon автоматически отключает seBorder в TForm.StyleElements и сам отвечает за прорисовку неклиенской части). Для синхронизации подключите данные 3 стиля к приложению и загружайте их одновременно со сменой стиля TRibbon.

Подключение стилей в Project options:



Пример одновременного переключения стиля:

procedure TForm1.frmRibbonDemoMainRibbonStyleLunaActnExecute(Sender: TObject);
begin
TStyleManager.SetStyle('Luna');
Ribbon1.Style := RibbonLunaStyle;
end;


Comments

Check out more tips and tricks in this development video: