Ручное
редактирование коллекций панелей и действий
Перетаскивание имеет много достоинств, однако оно не всегда удобно. Поэтому было бы странно, если бы не было предусмотрено другого способа. Хоть он напрямую и не рекомендован в документации, но в ряде случаев более эффективен.
Рассмотрим работу с дочерними объектами менеджера действий, которые упакованы один в другой, как матрешки.
Итак, щелкнем на свойстве ActionManager на форме и посмотрим на содержимое Инспектора объектов. Внутри него мы обнаружим сразу две "матрешки" — свойство
ActionBars содержит коллекцию ссылок на дочерние панели, свойство
LinkedActionList может содержать дополнительный список действий, отданных "в управление" данному менеджеру — например, для централизованной установки общих свойств.
Щелкнем на свойстве ActionBars. Появится редактор панелей (рис. 8.7), а в Инспекторе объектов обратим внимание на следующее свойство объекта
ActionBars:
property Customizable: Boolean;
Это свойство указывает, может ли коллекция редактироваться во время выполнения.
В коллекции содержатся не сами панели, а их "заместители" — объекты типа
TActionBaritem, которые на них указывают. Надпись на рисунке
"1-ActionBar -> ActionToolBarl"
показывает, что первый элемент коллекции связан с панелью ActionTooiBar2. Вы можете добавлять и удалять элементы этой коллекции, по мере необходимости связывая их через свойство
ActionBar с уже существующей панелью.
Рис. 8.7. Редактор коллекции
панелей компонента TActionManager
Через Инспектор объектов вы можете изменять
внешний вид объектов типа TActionBaritem
и соответствующих им панелей.
Свойство
property Color:
TColor;
отвечает за фоновый цвет панели. Если вам изменения
цвета недостаточно, в качестве фона выберите картинку
property Background:
TPicture;
которая будет расположена на панели в соответствии
со значением свойства
property BackgroundLayout:
TBackgroundLayout;
TBackgroundLayout
= (blNormal, blStretch, blTile, blLeftBanner, blRightBanner);
Помимо внешнего вида можно разрешить/запретить
перетаскивание панелей и их дочерних элементов. Обратимся к свойству
property ChangesAllowed:
TChangesAllowedSet;
TChangesAllowed
= (caModify, caMove, caDelete);
TChangesAllowedSet
= set of TChangesAllowed;
Множество из трех возможных значений позволяет
запретить те или иные нежелательные изменения для дочерних элементов панели.
Если в него не включен режим caDelete,
то элемент нельзя убирать (перетаскивать) с панели. Если нет режима
caMove — нельзя передвигать внутри панели. Наконец, отсутствие режима
caModify означает запрет на изменение
визуальных свойств (заголовка и т. п.).
Внутри коллекции
TActionBaritem спрятаны еще две "матрешки" — свойства
items и Contextitems. Оба свойства
представляют из себя коллекции объектов, указывающих на действия (класс коллекции
TActionCiients, класс элемента коллекции TActiondientitem).
Первое свойство указывает непосредственно на дочерние действия, второе — на
действия, которые будут показаны в качестве всплывающего меню при нажатии правой
кнопки мыши.
У коллекции TActionClients
есть заслуживающие особого упоминания свойства.
Свойство
property CaptionOptions:
TCaptionOptions;
TCaptionOptions
= (coNone, coSelective, coAll);
задает показ/отсутствие заголовков дочерних
действий. В случае установки в coNone
они не показываются, COAII — показываются все,
coSelective — показываются в соответствии со значением
showCaption дочернего объекта TActiondientitem.
Это свойство можно также установить на первой странице редактора менеджера действий
в одноименном выпадающем списке.
Свойство
property Smalllcons:
Boolean;
указывает размер значков, соответствующих действиям.
По умолчанию установлено в значение True
(маленькие значки). Визуально оно доступно через тот же редактор — третья страница,
флажок Large Icons.
Свойство
property HideUnused:
Boolean;
разрешает скрытие редко используемых действий,
описанное в предыдущем разделе. Если вы не хотите пользоваться механизмом скрытия,
на третьей странице редактора менеджера действий и диалога
TCustomizeDig есть флажок Menu show recent items first. Сбросьте
его, и свойства HideUnused у клиентов
действий установятся в значение False.
И, наконец, коллекцию можно сделать нередактируемой.
Для этого у нее есть свойство Customizable.
Ну вот, мы уже добрались до самой маленькой
матрешки — TActiondientitem. Этот объект
связывается напрямую с одним действием через свойство Action. Правда в него
можно спрятать еще меньшую матрешку — у него также есть свойства
items и contextitems. Эти свойства
используются при организации многоуровневых меню и меню, выпадающих из кнопок
(точнее, псевдокнопок — напомним, объекты TActiondientitem
на панелях не являются ни кнопками, ни компонентами вообще).
|