Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методическое пособие для самостоятельных работ.doc
Скачиваний:
22
Добавлен:
16.11.2019
Размер:
2.89 Mб
Скачать

3.2.19. TActionManager - менеджер действий

Вместе с тремя другими компонентами страницы Additional - TActionMainMenuBar, TActionToolBar И TCustomDIg позволяет создавать настраиваемый пользовательский интерфейс.

Таким интерфейсом обладает, например, среда Delphi: вы можете добавить/удалить любую инструментальную кнопку, запретить/разрешить выбор кнопок и опций меню и т. п.

Компонент TActionManager централизует однотипные действия, производимые схожими в функциональном отношении элементами интерфейса. Каждое такое действие компонент сохраняет в дисковом файле, что позволяет программе “запоминать” последние настройки, произведенные пользователем. Таким образом, компонент значительно расширяет функциональность компонента TActionList (см. п. 3.1.16) и по существу делает его ненужным.

Компонент оперирует категориями однотипных действий (Edit, File, Format и т. п.) и может размещать категории в контейнере TAсtionMainMenuBar (в виде опций меню), а входящие в них действия - в контейнере TActionToolBar (в виде инструментальных кнопок). В Delphi предусмотрены 12 стандартных категорий, многие действия которых уже заранее предопределены. Например, в категорию File входит предопределенное действие TFileExit. Выбор этого действия в меню или инструментальной кнопкой приводит к завершению работы программы.

Познакомимся с методикой использования компонента на следующем примере.

Поместите на пустую форму компоненты TActionManager, ТАсtionMainMenuBar, TActionToolBar и TCustomizeDlg. по умолчанию контейнеры TActionMainMenuBar и TActionToolBar займут верхнюю часть формы, положение двух других компонентов не имеет значения.

Дважды щелкните по компоненту или вызовите его локальное меню и выберите опцию Customize - на экране появится окно редактора компонента (рис. 3.35).

Рис. 3.35. Редактор компонента TActionManager

Щелкните по окну правой кнопкой и выберите New Standard Action или просто нажмите Ctrl+Ins - на экране появится дополнительное окно с перечнем всех определенных в Delphi стандартных классов действий (рис. 3.36).

С помощью полосы скроллирования сместите список вверх и выберите в нем все классы, связанные с категорией File (для выбора нескольких классов одновременно щелкайте по каждому, удерживая нажатой клавишу Ctrl).

“Схватите” мышью категорию File и перетащите ее на полосу TActionMainMenuBar. Раскройте категорию и перетащите на полосу TActionToolBar опцию Exit.

Поместите в свойство/событие ActionManager компонента TCustomizeDIg ссылку на компонент ActionManagerl.

Напишите такой обработчик onClick для полосы TActionToolBar:

procedure TForm1.ActionToolBar1Click(Sender: TObject);

begin

CustomizeDlg1.Show

end;

Рис. 3.36. Окно со списком стандартных действий

Если вы запустите программу, то увидите пустое окно с меню File и инструментальной кнопкой Exit, причем опции меню (кроме недоступной опции Run) и инструментальная кнопка выполняют ожидаемые от них действия. Щелчок по инструментальной панели активизирует уже знакомое нам окно редактора 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