Поэтому наш пример лишь показывает, как загрузить динамическую библиотеку theme.dll и получить ссылку на тему визуального стиля для текущего окна и кнопочного элемента управления.
V Листинг è.4. ПримерI использования функций Theme API в Delphi j
var DC : HDC;
CurrentThemeData: HTHEME;
begin if UseThemes and InitThemeLibrary then try
DC := GetWindowDC(Handle);
try
CurrentThemeData := OpenThemeData(0, 'button');
CloseThemeData(CurrentThemeData); finally
ReleaseDC(Handle, DC);
end finally FreeThemeLibrary;
end else
ShowMessage('Приложение или операционная система не поддерживают использование Theme API');
end;
Функция
function UseThemes: Boolean;
проверяет способность операционной системы и приложения использовать Theme API.
Методы
fonction InitThemeLibrary : Boolean;
procedure FreeThemeLibrary;
соответственно инициализируют и выгружают библиотеку theme.dll.
Графический контекст ос наверняка понадобится при отрисовке элементов управления (см. гл. 10).
Функция
OpenThemeData: function(hwnd: HWND;
pszClassList: LPCWSTR): HTHEME;
stdcall;
возвращает дескриптор темы для текущего визуального стиля и класса, имя которого представлено параметром pszClassList.
После того как тема загружена, можно использовать разнообразные графические функции, входящие в состав программного интерфейса.
При завершении работы не забудьте освободить занятые дескрипторы графического контекста и темы. Для темы используйте функцию
CloseThemeData: function(hTheme: HTHEME): HRESULT;
stdcall;
Заинтересованный читатель найдет подробное описание нужных функций Theme API в Microsoft MSDN или же может полюбопытствовать содержимым модулей UxTh.eme.pas и Themes.pas.
Компоненты настройки цветовой палитры
Помимо создания собственных визуальных стилей, что является делом довольно трудоемким и хлопотным, вы можете изменить внешний вид пользовательского интерфейса приложения более легким способом. Впервые в составе Палитры компонентов Delphi 7 появились специализированные компоненты, позволяющие настраивать цветовую палитру всех возможных деталей пользовательского интерфейса одновременно. Эти компоненты расположены на странице Additional:
□
TStandardColorMap - по умолчанию настроен на стандартную цветовую палитру Windows;
OTXPColorMap - по умолчанию настроен на стандартную цветовую палитру Windows ХР;
□ TTwilightColorMap - по умолчанию настроен на стандартную полутоновую (черно-белую) палитру Windows.
Все они представляют собой контейнер, содержащий цвета для раскраски различных деталей элементов управления. Разработчику необходимо лишь настроить эту цветовую палитру и по мере необходимости подключать к пользовательскому интерфейсу приложения. Для этого снова используется KOMnOHeHTTActionManager.
Все панели инструментов (класс TActionToolBar), созданные в этом компоненте (см. гл. 8), имеют свойство
property ColorMap: TCustomActionBarColorMap;
в котором и задается необходимый компонент цветовой палитры. Сразу после подключения все элементы управления на такой панели инструментов перерисовываются в соответствии с цветами новой палитры.