Delphi для профессионалов. Действия (Actions) и связанные с ними компоненты
Компонент TActionManager
Если вы не думаете о переносе своего приложения в среду Linux, то имеются все основания воспользоваться потомком
TActionList — компонентом
TActionManager (далее в тексте — менеджер действий). Более современный и "продвинутый" он обеспечит вас многими дополнительными возможностями. Итак, обо всем по порядку.
Будучи применен сам по себе, компонент TActionManager ничем не отличается от предшественника. Отличия проявляются, если действия из этого компонента разместить на специальных панелях —
TActionMainMenuBar (будем называть его панелью главного меню) и
TActionToolBar (далее — панель действий).
На первой странице редактора TActionManager (вызывается двойным щелчком или командой Customize из контекстного меню; показан на рис. 8.5)
как раз и содержится список всех панелей, связанных с данным менеджером действий. Вы можете добавить новый или убрать компонент
TActionToolBar нажатием кнопок
New и Delete соответственно. С компонентом
TActionMainMenuBar так по понятным причинам поступить нельзя — меню полагается иметь одно.
Рис. 8.5. Первая страница
редактора свойств компонента TActionManager
Самый простой и рекомендованный Borland способ
для связи действий с одной стороны и панелей меню и инструментов с другой —
это перетаскивание (Drag-and-Drop). На второй странице редактора содержится
список всех действий по категориям. И отдельное действие, и целую категорию
можно брать и тащить мышью на нужную панель (рис. 8.6).
Когда вы перетаскиваете действие на панель,
на нем появляется специальный компонент, похожий на пункт меню или кнопку. Его
роль — служить клиентом данного действия. Поэтому, естественно, он сразу и автоматически
получает нужные Caption, imageindex, Hint
и прочие общие для всех клиентов свойства, о которых говорилось выше. Класс
этого клиента — TActionclientitem; будем
называть их псевдокнопками или псевдоэлементами.
При перетаскивании нет особых сложностей, но
надо иметь в виду следующие аспекты:
при перетаскивании
всей категории на панель главного меню она появляется в виде пункта меню верхнего
уровня и содержит при этом все свои дочерние действия;
при перетаскивании
всей категории на панель действий создаются псевдокнопки для всех дочерних
действий в категории. Логично поступить по принципу "одна категория —
одна панель действий", это будет полезно для настройки интерфейса пользователем;
если вы
ошиблись при перетаскивании, не нажимайте кнопку Delete — при этом
удалится не только псевдокнопка, но и само действие. Перетяните ненужный псевдоэлемент
за пределы панелей действий, тогда он будет удален;
если вы
уже перетянули категорию на панель главного меню, а потом решили добавить
к ней действия, то вам придется убрать соответствующий ей псевдоэлемент и
перетянуть всю категорию заново. Либо воспользоваться ручным способом, который
описывается ниже.
Рис. 8.6. Страница действий
редактора свойств компонента TActionManager
Знаете ли Вы, что примитивные конструкторы - это операции, которые создают объекты, соответствующего им типа, не используя никаких объектов в качестве аргументов. Примером такой операции является создание пустого списка.