18.2.19. TActionManager - менеджер действий
Вместе с тремя другими компонентами страницы Additional -
TActionMainMenuBar, TActionToolBar И TCustomDIg (все перечисленные компоненты впервые введены в версии 6) позволяет создавать настраиваемый пользовательский интерфейс.
Таким интерфейсом обладает, например, среда Delphi: вы можете добавить/удалить любую инструментальную кнопку, запретить/разрешить выбор кнопок и опций меню и т. п.
Компонент TActionManager централизует однотипные действия, производимые схожими в функциональном отношении элементами интерфейса. Каждое такое действие компонент сохраняет в дисковом файле, что позволяет программе “запоминать” последние настройки, произведенные пользователем. Таким образом, компонент значительно расширяет функциональность компонента TActionList (см. п. 18.1.16) и по существу делает его ненужным.
Компонент оперирует категориями однотипных действий (Edit, File, Format и т. п.) и может размещать категории в контейнере тасtionMainMenuBar (в виде опций меню), а входящие в них действия - в контейнере TActionToolBar (в виде инструментальных кнопок). В
Delphi предусмотрены 12 стандартных категорий, многие действия которых уже заранее предопределены. Например, в категорию File входит предопределенное действие TFileExit. Выбор этого действия в меню или инструментальной кнопкой приводит к завершению работы программы.
Познакомимся с методикой использования компонента на следующем примере.
Рис. 18.20. Редактор компонента TActionManager
procedure TFormI.ActionToolBarlClick(Sender: TObject);
begin
CustomizeDlgl.Show
end;
Рис. 18.21. Окно со списком стандартных действий
Если вы запустите программу, то увидите пустое окно с меню File и инструментальной кнопкой Exit, причем опции меню (кроме недоступной опции Run) и инструментальная кнопка выполняют ожидаемые от них действия. Щелчок по инструментальной панели активизирует уже знакомое нам (рис. 18.20) окно редактора Atcion-Manageri, и вы можете изменять состав меню и инструментальной панели.
Свойства компонента:
property ActionBars: TAction Bars; |
Содержит коллекцию всех инструменталь ных полос, определенных в приложении. Коллекция автоматически пополняется, когда на очередную полосу впервые кладется элемент меню (категория) или кнопка (действие) |
property ActionCount: Integer;
|
Содержит общее количество определенных в программе действий |
property Actions[Index: Integer]: TContainedAction; |
Открывает индексированный доступ к конкретному действию |
property FileName: TFileName;
|
Имя файла, в котором компонент сохраняет текущую конфигурацию действий |
property LinkedActionLists: TActionListCollection; |
Содержит коллекцию всех связанных с компонентом действий |
property Images: TCustomImageList; |
Ссылка на связанное с компонентом хранилище изображений |
property PrioritySchedule: TStringList; |
Содержит для каждого действия номера сессий (запусков программы), когда связанная с действием кнопка или опция меню меняла свою видимость. Если какой-то элемент интерфейса должен постоянно присутствовать на экране, его строка PrioritySchedule должна хранить (-1) |
type TActionListState = (asNormal, asSuspended, asSuspendedEnabled) ; |
Включает или отключает действия: asNormal - все действия включены; asSuspended - все действия выключены, их свойства |
property State: TActionListState; |
Enabled не изменяются; asSuspendedE nabled - все действия выключены, их свойства Enabled получают значения True |
Если свойство FileName не определено, компонент не сможет запоминать изменения, сделанные пользователем в интерфейсе программы, и представит элементы интерфейса так, как они были определены при создании программы. Для файла нет умалчиваемого расширения, но сама среда Delphi запоминает сделанные вами изменения в файле BIN\DELPHI32 . DMT.
Методы компонента:
procedure LoadFromFile(const FileName: String); |
Читает файл, указанный в параметре File-Name и загружает информацию, необходимую для восстановления полос действий |
procedure LoadFromStream(Stream: TStream); |
Загружает информацию, необходимую для восстановления полос действий, из потока Stream Восстанавливает вид полосы таким, как сохраняет ее свойство DefaultActionBar Уничтожает файл, указанный в свойстве FileName |
procedure ResetActionBar(Index: Integer) ; procedure ResetUseageData; |
Сохраняет текущие настройки интерфейса в файле FileName |
procedure SaveToFile(const FileName: String) ; procedure SaveToStream(Stream: TStream); |
Сохраняет текущие настройки интерфейса в потоке Stream |
function ExecuteAction(Action: TBasicAction): Boolean; override; |
Создает событие OnExecute для выполнения действия Action |