Диспетчеризация действий. Прежде чем начать программирование приложения, нужно составить список действий, которые должны быть доступны будущему пользователю через разделы меню
Прежде чем начать программирование приложения, нужно составить список действий, которые должны быть доступны будущему пользователю через разделы меню, инструментальные панели, кнопки и другие элементы управления.
Действие (Action) - реализация некоторого поведения, являющегося реакцией на поступок пользователя, такой, как щелчок на кнопке или на разделе меню – инициаторе действия или интерфейсном компоненте действия. Примерами действий являются открытие файла и его загрузка в какой-то приемник, сохранение информации в файле на диске, установка атрибутов шрифта и выравнивание текстов в окнах редактирования, поиск и замена фрагментов текста, навигация по набору данных, выполнение какогог-то внешнего приложения, вызов справки и многое другое.
Перечисленные примеры относятся к стандартным действиям. В действительности таких действий много больше. Все стандартные действия реализованы в C++Builder классами, наследующими базовому классу действий TAction. Обработчики подобных действий в ряде случаев писать вообще не надо, так как они реализованы в соответствующих классах.
Помимо стандартных действий в реальных приложениях имеются и нестандартные, связанные с какими-то расчетами, обработкой данных и т.п. Объекты таких действий пользователь должен создавать сам и сам должен писать для них обработчики, реализующие данные действия.
При программировании список действий реализуется специальными компонентами, обеспечивающими диспетчеризацию действий, – ActionListиActionManager. Редактор диспетчера действий ActionListпозволяет сформировать список действий, написать обработчики, выполняющие задуманные действия, задать основные свойства будущих интерфейсных элементов – пиктограммы, надписи, быстрые кнопки, тексты подсказок и т.п. Диспетчер действий ActionManager намного мощнее диспетчера ActionList.
После того, как список действий создан, надо сформировать полосы действий. Это полосы, на которых располагаются интерфейсные компоненты действий – полоса главного меню и инструментальные панели. При использовании диспетчера ActionList полосы действий добавляют на форму в виде отдельных компонентов, создают на них инициаторы действий (разделы меню, быстрые кнопки), а затем связывают инициаторы с соответствующими действиями из списка диспетчераActionList. При таком связывании свойства, заложенные в действия, автоматически передаются интерфейсным компонентам. В диспетчере ActionManager создание полос действий упрощается. Они создаются и формируются непосредственно из редактора ActionManager простым перетаскиванием мышью.
Интерфейсные компоненты действий обычно должны содержать поясняющие их изображения. Изображения собираются в списке изображений – компоненте ImageList. Для нестандартных действий изображения загружаются в ImageList пользователем. А изображения для стандартных действий загружаются в ImageListавтоматически по мере формирования списка в диспетчере действий.
Таким образом, последовательность формирования списка действий и проектирования меню и инструментальных панелей сводится к следующим шагам.
1.Составляется список действий, которые должны быть доступны будущему пользователю через разделы меню, инструментальные панели, кнопки и другие элементы управления.
2.Для тех нестандартных действий, которые должны быть доступны из быстрых кнопок инструментальной панели, готовится список пиктограмм на кнопках в компоненте ImageList.
3.На главную форму переносится компонент диспетчеризации действий: ActionList или ActionManager. Компонент связывается с ImageList. Формируется список стандартных и нестандартных действий.
4.Каждому действию задается набор характеристик: Name(имя), Caption (надпись, в которой выделяется символ быстрого доступа), ShortCut («горячие» клавиши), ImageIndex (номер изображения в ImageList), Hint (тексты подсказок), HelpContext или HelpKeyWord (ссылка на тему справки) и др. Для нестандартных действий все эти характеристики записываются пользователем. Для стандартных действий они заносятся автоматически. Нужно только надписи и подсказки перевести на русский язык и, может быть, исправить ссылки на неприемлемые стандартные изображения и комбинации «горячих» клавиш. Если в приложении предусматривается контекстная справка, то надо задать ссылки на соответствующие темы. Естественно, в начале проектирования справки еще нет. Так что свойства HelpContext и HelpKeyWord задают позднее.
5.Записываются обработчики событий выполнения для всех нестандартных действий. Стандартные действия обрабатываются автоматически и для многих из них достаточно задать некоторые свойства обработки. Но иногда надо писать обработчики и для стандартных действий.
Дальнейшие шаги зависят от используемого диспетчера. Для диспетчера ActionList далее надо сделать следующее.
6.На форму переносится компонент MainMenu – главное меню, связывается с ImageList, в компоненте формируется меню и в его разделах даются ссылки на действия, описанные в ActionList.
7.На форме создается инструментальная панель (обычно компонент ToolBar). Панель связывается с ImageList, а в ее кнопках даются ссылки на действия, описанные в ActionList.
В случае использования диспетчераActionManager следующие шаги таковы.
6.На форму переносится компонент ActionMainMenuBar – полоса главного меню. Она связывается с диспетчером ActionManager. Затем из редактора ActionManager перетаскиваются мышью на полосу главного меню категории разделов, которые должны входить в меню как головные разделы или отдельные действия.
7.В редакторе ActionManager создается новая инструментальная панель, или несколько панелей. На них перетаскиваются мышью необходимые действия.