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


         

Окно выбора стандартных действий



Рисунок 8.4. Окно выбора стандартных действий


С точки зрения программирования стандартное действие — это класс-потомок TCustomAction. Классы действий описаны в трех модулях: более распространенные в stdActns, менее — в ExtActns, действия с наборами данных содержатся в DBActns. Наконец, два действия, работающие со списками, — TStaticListAction И TVirtualLitAction — описаны в отдельном модуле ListActns.

Для выполнения ряда стандартных действий нужно определить понятие "цели" действия (Action Target). Под целью понимается компонент, в отношении которого будет совершаться данное действие. Так, операции редактирования могут выполняться, когда на форме активен текстовый элемент управления (TEdit, TMemo И Т. П.). У любого действия потомка TBasicAction) есть три метода:

function HandlesTarget(Target: TObject): Boolean; virtual; 

procedure UpdateTarget(Target: TObject); virtual;

 procedure ExecuteTarget(Target: TObject); virtual;

Метод HandiesTarget проверяет, применимо ли действие к цели Target. Если да, то действие производится вызовом метода ExecuteTarget. Если нет, поиск подходящей цели продолжается.

Цель в Delphi 7 определяется по следующему правилу:

  •  первым кандидатом является активный элемент управления на форме (свойство ActiveControl);
  •  если такового нет или он не является подходящим (метод HandiesTarget вернул значение False), целью становится текущая форма, получившая сигнал о действии;
  •  если и она не подходит, происходит рекурсивный перебор всех компонентов на форме в поисках первого подходящего.


В ряде случаев вы можете произвести действие над желаемым компонентом, вызвав метод ExecuteTarget и передав в него в качестве параметра этот компонент.

Примечание
Примечание

Стандартные действия редактирования, чьи имена начинаются с TEdit, и поиска (TSearch...) применимы только к потомкам компонента TCustomEdit. Стандартные действия расширенного редактирования, имена которых начинаются с TRichEdit, применимы только к потомкам TCustomRichEdit. Оконные стандартные действия (упорядочивание, смена, закрытие дочерних окон; имена начинаются с TWindow) применимы только к формам многодокументного интерфейса, чье свойство FormStyle установлено в fsMDiForm (Рисунок 8.4).

Многие классы стандартных действий не требуют элемента управления — цели. Так устроены все действия, вызывающие стандартные диалоговые окна (выбор файла, цвета, шрифта, настройка принтера и т. п.). Чтобы отреагировать на такое действие, нужно написать обработчики следующих событий:

property BeforeExecute: TNotifyEvent; 

property OnAccept: TNotifyEvent; 

property OnCancel: TNotifyEvent;

Первое возникает до показа диалога, второе — после нажатия пользователем кнопки ОК, третье — после нажатия Cancel.

Примечание
Примечание

Поскольку диалоги входят в действия в качестве дочерних компонентов, вы можете реагировать и на все "дочерние" события, которые происходят в соответствующем диалоге (OnShow, OnCanClose, OnClose и т. п.)

Поместив на форму стандартные действия, вы заметите, что все они имеют предопределенное значение свойства imageindex. Если так, то где изображение, на которое эти индексы указывают? Вы можете раздобыть его, открыв демонстрационный проект WordPad (папка Demos\ActionBands в поставке Delphi 7). Откройте редактор компонента imageList1 и экспортируйте весь список в виде одного большого файла формата BMP.

 



Содержание раздела