Создание методов компонента
Добавление методов в новый компонент - операция несложная. Однако нужно обратить внимание на некоторые особенности, которые в дальнейшем облегчат взаимодействие пользователя с вашим компонентом.
Во-первых, необходимо, чтобы методы не были взаимозависимыми, т. е. каждый метод должен быть самостоятельным и законченным. Во-вторых, метод не должен блокировать компонент. И, в-третьих, метод должен иметь имя, соответствующее выполняемым действиям.
Методы объявляются в секциях private, public и protected. При создании нового метода важно учитывать, как он будет использоваться в дальнейшем, сможет ли данный компонент быть предком для других компонентов, и, в зависимости от этого, разместить методы в нужных секциях. В таблице 2 приведены рекомендации по выбору секций для методов компонента.
Таблица 2. Размещение методов компонента в различных секциях.
Секция | Размещаемые методы |
Private | В данной секции лучше всего размещать те методы, которые не могут изменяться в компонентах-потомках. Эти методы не доступны вне данного компонента |
Protected | В этой секции размещают методы, которые будут доступны для изменения в компонентах-потомках |
Public | Данная секция предназначена для размещения методов, которые доступны любому пользователю компонента. Доступ полный во время работы приложения, но не во время разработки, т. е. данные методы недоступны в окне инспектора объектов |
Published | В этой секции размещаются свойства компонента, которые доступны во время разработки приложения в окне инспектора объектов |
Например, добавим в компонент TMyButton процедуру Click в которой будем подсчитывать количество нажатий на кнопку:
unit New_btn;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TMyButton = class(TButton)
private
FClickCount : Longint;
protected
{ Protected declarations }
public
constructor Create(AOwner : TComponent); override;
published
procedure Click; override;
property ClickCount : Longint read FClickCount write FClickCount;
end;
procedure Register;
implementation
constructor TMyButton.Create(AOwner : TComponent);
begin
inherited Create(AOwner);
ShowHint:=True;
FClickCount:=0;
end;
procedure TMyButton.Click;
begin
Inc(FClickCount);
inherited Click;
end;
procedure Register;
begin
RegisterComponents('Samples', [TMyButton]);
end;
end.
Дата добавления: 2015-09-07; просмотров: 834;