Функция
function GetStyleName: string; возвращает имя стиля. Функция
function GetColorMapClass (ActionBar: TCustomActionBar) : TCustomColorMapClass;
позволяет получить ссылку на класс компонента настройки цветовой палитры (см. разд. "Компоненты настройки цветовой палитры "далее в этой главе), используемый панелью инструментов.
Следующие три метода дают информацию о классах различных типов элементов управления, используемых при проектировании пользовательского интерфейса С 17JVDJJJ30 КомпонентаTActionManager.
Для того чтобы получить доступ к элементам управления, связанным со стилем, предназначен метод
function GetControlClass (ActionBar: TQistcrnActionBar;
Anltem: TActionClientltem) : TCustcrrActionControlClass;
Он возвращает класс элемента управления из панели ActionBar, связанного с элементом управления Anltem. Именно эта функция вызывается при создании элементов управления в панелях инструментов компонента
TActionManager.
Как уже говорилось выше, при присвоении свойству style компонента TActionManager нового значения (экземпляра класса разработанного вами визуального стиля) уничтожаются все существующие элементы управления и затем создаются новые. И в процессе создания каждого визуального компонента вызывается функция Getcontroiciass нового стиля, а возвращенное ею значение используется для вызова конструктора соответствующего класса.
Аналогично, для получения класса, используемого в панели меню, применяется метод
uniction GetPopupClass(ActionBar: TCustomActionBar): TGetPcpuptlass; и для классов кнопок панели инструментов применяется функция
furiction GetScrollBtnClass : TCustomToolScrollBtnClass ; А класс самой панели инструментов возвращает функция
function GetAddRemoveltemClass (ActionBar : TGistcniActionBar) : TCustomAddRemoveltemClass;
Итак, после разработки и отладки собственных классов элементов управления с заданными свойствами вам потребуется создать потомка от класса TActionBarStyleEx и перекрыть все перечисленные выше функции так, чтобы они возвращали нужные классы для используемых типов элементов управления.
Thème API
Помимо описанного способа создания и управления визуальными стилями разработчик может использовать функции Thème API, разработанные Microsoft для этих целей.
Для того чтобы использовать Thème API, можно стандартным способом подключить к проекту динамическую библиотеку Theme.dll:
varThemeDLL: HINST;
Ьэдтп
ТпегпэПЬЬ := LoadLibrary ( ' thème. dll ' ) ;
if ThemePLL 0 0 then begin
end;
end;
Затем можно использовать возможности этого программного интерфейса напрямую. С деталями его реализации вы можете ознакомиться в документации Microsoft MSDN.
Однако можно поступить проще. В составе Delphi 7 имеется модуль Ux-Theme.pas, в котором как раз и реализованы возможности Theme API. Кроме этого, модуль Themes.pas содержит классы для основных элементов управления, которые могут использоваться при создании визуальных стилей, а также класс менеджера тем TThemeServices.
Так как детальное обсуждение возможностей Theme API выходит за рамки этой книги, в листинге 6.4 представлен схематичный пример использования функций этого программного интерфейса. Кроме того, как и все остальные API, работающие с GUI (Graphic User Interface) операционной системы, реальный код с использованием Theme API всегда перегружен многочисленными и ужасными на вид (а на самом деле вполне безобидными) функциями, рассчитывающими области вывода, неклиентские зоны оконных элементов и т. д.