VCL Styles - скины в Delphi XE2Источник: delphilab Snowy
В Delphi XE2 появился встроенный механизм скинов с названием "VCL Styles". Если зайти в свойства проекта и выбрать Application -> Appearance, то мы увидим поле 'Custom Styles', в котором мы можем добавить стандартные стили, а также посмотреть, как они выглядят, при помощи кнопочки 'Preview'.
Тут же мы можем выбрать, какой стиль будет установлен при запуске приложения. За работу со стилями отвечает класс TStyleManager, расположенный в модуле Themes . Данный менеджер стилей предоставляет следующие возможности:
Все эти действия можно производить, как с объектом класса TStyleManager, так и непосредственно через методы класса. Для смены стиля предназначены команды SetStyle и TrySetStyle. TStyleManager.TrySetStyle('Ruby Graphite', false); Второй параметр у TrySetStyle - показывать ли сообщения об ошибке, если не удалось выбрать стиль. Список зарегистрированных стилей содержится в массиве StyleNames. Организовать смену стилей можно, например, с помощью ComboBox: uses Themes; procedure TForm1.FormCreate(Sender: TObject); var sm: TStyleManager; i: integer; begin sm := TStyleManager.Create; for i := 0 to Length(sm.StyleNames)-1 do ComboBox1.Items.Add(sm.StyleNames[i]); end; procedure TForm1.ComboBox1Select(Sender: TObject); begin TStyleManager.TrySetStyle(ComboBox1.Text, false); end; Загрузить стиль из файла поможет метод LoadFromFile. function LoadStyle(FileName: string): string; // загрузить скин и вернуть его имя var sm: TStyleManager; si: TStyleInfo; begin result := ''; sm := TStyleManager.Create; try if TStyleManager.IsValidStyle(FileName, si) then // взять информацию о стиле в si begin result := si.Name; if sm.Style[result] = nil then sm.LoadFromFile(FileName); end; finally sm.Free; end; end; procedure TForm1.Button1Click(Sender: TObject); var s: string; begin s := LoadStyle('C:\Temp\Test.vsf'); // загрузить скин if s <> '' then // если не загрузили - то имени нет begin TStyleManager.TrySetStyle(s, false); // включить if ComboBox1.Items.IndexOf(s) < 0 then ComboBox1.Items.Add(s); // если нет в списке - добавить end; end; Через свойство Style можно получить стиль с указанным именем, или проверить его на существование, как в этом примере. Метод IsValidStyle позволяет определить, является ли файл стилем и, если да, то получить информацию о нём - название, автор, сайт автора и почта. Нам интересно только название. Аналогично можно загрузить стиль из ресурса, при помощи TryLoadFromResource, в параметрах которого указать тип ресурса и имя. Но мне кажется более удобным следующий вариант:
После компиляции все стили автоматически попадут в список по-умолчанию. Где взять файлы со стилями? Хороший вопрос. Думаю, в скором времени появятся библиотеки стилей. В комментариях пишите, где можно взять готовые. Для создания новых стилей существует специальный редактор. Находится он в меню Tools -> VCL Style Designer. Я себе для тестов на скорую руку сляпал вот такой зелёненький. Если вы создали свой стиль, или скачали где-то, и хотите, чтобы он появился в настройках проекта, то файл следует сохранить в папку C:\Documents and Settings\Public\Documents\RAD Studio\9.0\Styles |