TActionManager является своего рода "командным пунктом", из которого должны управляться элементы управления приложения. Нас интересует только одно свойство этого компонента
| Code: | 
| property Style: TActionBarStyle; | 
По умолчанию среда разработки Delphi предлагает к использованию два стиля:
standard — приложение использует системную библиотеку ComCtl32.dll версии 5;
windows XP — приложение использует системную библиотеку ComCtl32.dll
версии 6 и единственный стандартный визуальный стиль Windows XP.
Эти стили применимы только к элементам управления, размещенным на панелях инструментов (TActionToolBar), созданных в компоненте
TActionManager.
Однако не торопитесь возмущаться явной ограниченностью выбора. Вы можете создать собственный стиль самостоятельно. Правда, это потребует очень много усилий — ведь на основе базовых классов элементов управления вам потребуется создать собственные классы с нужным вам поведением и внешним видом.
Для этого необходимо создать класс нового визуального стиля на основе класса TActionBarstyieEx. Затем новый стиль регистрируется при помощи процедуры
| Code: | 
| procedure RegisterActnBarStyle(AStyle: TActionBarStyleEx); | 
После этого ваш стиль становится доступным для свойства style компонента TActionManager. Чтобы отменить стиль, используйте процедуру
| Code: | 
| procedure UnRegisterActnBarStyle(AStyle: TActionBarStyleEx); | 
Например, обе эти операции удобно выполнить при инициализации и деинициализации модуля, описывающего класс стиля:
Вариант регистрации и отмены собственного визуального стиля
| Code: | 
| var MyStyle: TMyStyleActionBars; ... initialization MyStyle := TMyStyleActionBars.Create; RegisterActnBarStyle(MyStyle); finalization UnregisterActnBarStyle(MyStyle); MyStyle.Free; end. | 
Для смены стиля приложения можно использовать глобальную переменную нового стиля (см. листинг 6.3). Ее достаточно присвоить свойству style:
| Code: | 
| ActionManagerl.Style := MyStyle; | 
При смене стиля все элементы управления, расположенные на панелях компонента ActionManagerl, будут уничтожены и созданы заново с использованием настроек нового стиля.
Класс TActionBarstyieEx имеет всего несколько методов, которые необходимо перекрыть при создании собственного стиля. Все они возвращают классы объектов, используемых при создании пользовательского интерфейса. Рассмотрим их.
Функция
| Code: | 
| function GetStyleName: string; | 
возвращает имя стиля.
Функция
| Code: | 
| function GetColorMapClass(ActionBar: TCustomActionBar): TCustomColorMapClass; | 
позволяет получить ссылку на класс компонента настройки цветовой палитры (см. разд. "Компоненты настройки цветовой палитры" далее в этой главе), используемый панелью инструментов.
Следующие три метода дают информацию о классах различных типов элементов управления, используемых при проектировании пользовательского интерфейса с помощью компонента TActionManager.
Для того чтобы получить доступ к элементам управления, связанным со стилем, предназначен метод
| Code: | 
| function GetControlClass(ActionBar: TCustomActionBar; AnItem: TActionClientltem): TCustomActionControlClass; | 
Он возвращает класс элемента управления из панели ActionBar, связанного с элементом управления Anitem. Именно эта функция вызывается при создании элементов управления в панелях инструментов компонента
TAct ionManager.
Как уже говорилось выше, при присвоении свойству style компонента TActionManager нового значения (экземпляра класса разработанного вами визуального стиля) уничтожаются все существующие элементы управления и затем создаются новые. И в процессе создания каждого визуального компонента вызывается функция Getcontrolciass нового стиля, а возвращенное ею значение используется для вызова конструктора соответствующего класса.
Аналогично, для получения класса, используемого в панели меню, применяется метод
| Code: | 
| function GetPopupClass(ActionBar: TCustorrActionBar) : TGetPopupClass; | 
и для классов кнопок панели инструментов применяется функция
| Code: | 
| function GetScrollBtnClass: TCustomToolScrollBtnClass; | 
А класс самой панели инструментов возвращает функция
| Code: | 
| function GetAddRemoveltemClass(ActionBar: TCustomActionBar): TCustomAddRemoveltemClass; | 
Итак, после разработки и отладки собственных классов элементов управления с заданными свойствами вам потребуется создать потомка от класса TActionBarstyieEx и перекрыть все перечисленные выше функции так, чтобы они возвращали нужные классы для используемых типов элементов управления.
 
			
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!