Справочное руководство по Delphi

Пример Редактора Компонент


В качестве примера давайте создадим Редактор Компонент для класса TButton. Этот Редактор будет показывать сообщение и изменять свойство Caption у объекта TButton. В данном примере это будет срабатывать и при двойном щелчке мыши, и через контекстное меню.

Декларация нового класса Редактора Компонент:

TButtonEditor = class(TComponentEditor)

private

procedure HiThere;

public

procedure Edit; override;

procedure ExecuteVerb(Index: Integer); override;

function GetVerb(Index: Integer): string; override;

function GetVerbCount: Integer; override;

end;

Процедура HiThere и будет показывать сообщение и изменять свойство Caption:

procedure TButtonEditor.HiThere;



begin

MessageDlg('Hi! It replaces Default Component Editor.',

mtInformation, [mbOK], 0);

(Component as TButton).Caption:='Hi!';

Designer.Modified;

end;

Процедуры Edit и ExecuteVerb только вызывают HiThere:

procedure TButtonEditor.Edit;

begin

HiThere;

end;

procedure TButtonEditor.ExecuteVerb(Index: Integer);

begin

if Index = 0 then HiThere;

end;

Процедуры GetVerb и GetVerbCount определяют вид контекстного меню:

function TButtonEditor.GetVerb(Index: Integer): string;

begin

result:='&Get message ...'

end;

function TButtonEditor.GetVerbCount: Integer;

begin

result:=1;

end;

Здесь в контекстное меню добавляется один пункт “Get message …”.

Редактор Компонент готов.

Необходимо зарегистрировать новый Редактор Компонент, это делается аналогично регистрации Редактора Свойств, только проще:

procedure Register;

begin

RegisterComponentEditor(TButton, TButtonEditor);

end;

После того, как Вы подключите новый Редактор Компонент в среду Delphi, а это делается в пункте меню “Options|Install Components”, создайте новый проект, положите на форму объект TButton и щелкните дважды на нем - появится диалог:

После того, как Вы нажмете “OK”, текст на кнопке изменится.

Созданный нами Редактор Компонент заместит Редактор по умолчанию для всех объектов класса TButton и его наследников, например, TBitBtn.

Полный текст Редактора Компонент приведен в файле SBEDIT.PAS в примерах к данному уроку.



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