Введение в 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 в примерах к данному уроку.



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