M Y D E L P H I 7 . R U Самоучитель программирования  
 
  • Главная
  •  

     

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

    Перетаскивание имеет много достоинств, однако оно не всегда удобно. Поэтому было бы странно, если бы не было предусмотрено другого способа. Хоть он напрямую и не рекомендован в документации, но в ряде случаев более эффективен.

    Рассмотрим работу с дочерними объектами менеджера действий, которые упакованы один в другой, как матрешки.

    Итак, щелкнем на свойстве 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 на панелях не являются ни кнопками, ни компонентами вообще).