Первые две возможности в этом списке используются относительно редко. Тем не менее они полезны, если вам нужно глобально добавлять/удалять/разрешать/запрещать действия.

Введение события OnUpdate является очень хорошей находкой, о нем напишем подробно. И автор этих строк, и, возможно, вы потратили немало времени, чтобы в разрабатываемых программах элементы управления находились в актуальном состоянии. Если, скажем, вашей программой открыт первый файл, то нужно активировать ряд кнопок и пунктов меню (Save, Save as, Print и т. п.); как только закрыт последний - отключить их. Если в буфере обмена есть что-то подходящее, необходимо активизировать пункт меню и кнопку Paste, если нет - отключить. В результате код, отслеживающий это, у неопытных программистов "размазывается" по всему приложению. А ведь можно поступить проще. Событие TAction.OnUpdate возникает в моменты простоя приложения, т. е. тогда, когда оно не занято обработкой сообщений (цикл содержится в методе idle объекта Application). Это гарантирует, что оно возникнет ДО ТОГО, как пользователь щелкнет мышью и увидит выпадающие пункты меню; поэтому можно успеть обновить их состояние. Пример использования события OnUpdate:

procedure TForml. PasteActionUpdate (Sender: TObject) ;
begin
TAction(Sender).Checked := Clipboard.HasFormat(CF_TEXT);
end;

Перед вызовом события OnUpdate также происходит 4-этапная последовательность действий, точно такая же, как при OnExecute.

Третье событие имеет такой тип:

THintEvent = procedure (\ar HintStr: string;
var CanShcw: Boolean) of object;

Оно вызывается тогда, когда от элемента управления требуется показать подсказку, связанную с данным действием. В обработчике события можно указать, будет ли что-нибудь показываться (параметр CanShow) и, если да, то что именно (параметр Hintstr).

Это были события, относящиеся к компоненту TAction. Сам компонент TActionList также имеет три события: OnExecute, OnUpdate И OnChange. О первых двух мы уже сказали; третье происходит в момент изменения списка (добавления или удаления действий).

Свойства, распространяемые на клиентов действия

Если у нескольких кнопок или пунктов меню общий обработчик, разумно потребовать, чтобы у них были и другие общие свойства. Так оно и реализовано в Delphi. В табл. 8.1 перечислены свойства, чье значение автоматически распространяется на всех клиентов данного действия.

Таблица 8.1. Свойства компонента TAction, автоматически распространяемые на всех его клиентов

Свойство

Назначение

property Caption: string;

Заголовок, связанный с действием

property Hint: string;

Подсказка к действию

property Enabled: Boolean;

Устанавливает, разрешено/запрещено ли действие

property Checked: Boolean;

Устанавливает, отмечено ли действие

property Grouplndex: Integer;

Индекс группы, в которую входит действие. Объекты TAction с одним значением этого свойства (причем бблыиим нуля) имеют зависимое переключение. Если свойство Checked любого объекта из группы устанавливается в True, у остальных оно сбрасывается в False

property AutoCheck: boolean;

Установка в True автоматически меняет значение свойства Checked на противоположное после каждого выполнения действия

property Imagelndex: Integer;

Индекс картинки в общем наборе картинок (набор указывается в свойствах родительского TActionList)

property HelpfType: THelpfPype;

Указывает на тип значения, связывающего действие с разделом системы помощи (htKeyword/htContext)

property HelpContext: THelpContext ;

Если свойство HelpType установлено в htContext, это свойство содержит ID раздела системы помощи

Таблицав. 1 (окончание)

Свойство

Назначение

property HelpKeyword: string;

Если свойство Не1рТуре установлено в

г^Кеуюогй, то свойство содержит ключе-

вое слово (термин), по которому происхо-

дит открытие соответствующего раздела

системы помощи

Вы привыкли к программам с картинками в меню и на панелях инструментов? Действие также можно снабдить картинкой. Компонент ТАсііопІлзІ; связывается со списком картинок тгтадеЫзг., а действие ТАстіоп - с конкретной картинкой через свойство ітадеіпсіех. Таким образом, все элементы управления, связанные с действием, - кнопки и пункты меню - будут иметь одну и ту же картинку, как показано на рис. 8.3. Впрочем, это относится ко всем остальным свойствам из табл. 8.1.


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в Delphi 7



Новости за месяц

  • Декабрь
    2017
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс