Иллюстрированный самоучитель по Delphi 7 для профессионалов

Ручное редактирование коллекций панелей и действий

Помимо внешнего вида можно разрешить/запретить перетаскивание панелей и их дочерних элементов. Обратимся к свойству:

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.

В этой главе мы подробно рассмотрели оба компонента; читателю решать, на базе чего строить свой интерфейс.

С одной стороны, материал этой главы не оказывает прямого влияния на последующие. С другой, пользовательский интерфейс – та "печка", от которой "пляшут" при создании больших приложений. Поэтому имейте в виду при чтении всех прочих данную главу.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.