Ручное редактирование коллекций панелей и действий
Помимо внешнего вида можно разрешить/запретить перетаскивание панелей и их дочерних элементов. Обратимся к свойству:
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 на панелях не являются ни кнопками, ни компонентами вообще).
Резюме
Хорошо знакомые со времен Delphi 1 составляющие интерфейса – меню (TMainMenu, TPopupMenu), кнопки(TButton, TSpeedButton), панели TPanel – постепенно уходят, уступая место компонентам с расширенной функциональностью. Центральным местом, где обрабатывается весь ввод пользователя, становится хранилище действий – TActionList или TActionManager.
В этой главе мы подробно рассмотрели оба компонента; читателю решать, на базе чего строить свой интерфейс.
С одной стороны, материал этой главы не оказывает прямого влияния на последующие. С другой, пользовательский интерфейс – та "печка", от которой "пляшут" при создании больших приложений. Поэтому имейте в виду при чтении всех прочих данную главу.