组件编写中怎样创建,私有组件的事件过程?详情请入内(100分)

  • 主题发起人 主题发起人 运通
  • 开始时间 开始时间

运通

Unregistered / Unconfirmed
GUEST, unregistred user!
我创建一个组件A,在A里边有一个B,在A的CREAT中创建,但是我想对B的某一个事件进行
处理,比如B有一个ONCLICK(……)事件,我想在它产生这个事件的时候进行一些处理,
需要怎样书写代码?
最好有例子。
 
比如我扩展Tbutton,在组件内的CREAT中自动建立一个了一个Tedit,然后我想对创建的Tedit的
ONCHANGE事件进行处理。应该这样做?
 
[8D]
你可以写一个与change方法同类型的方法,然后把TEDIT的ONCHANGE事件指针赋给这个方法。
 
TYourObj = class(TButton)
protected
FEdit : TEdit;
public
constructor
create....
published
property Edit : TEdit read FEdit write FEdit;
end;

这样就可以了,在设计期在设计器中点中Edit就相当于对一个edit编辑
 
constructor TYourBtn.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
...
YourEdit := TEdit.Create(Self);
with YourEdit do
begin
Parent := Self;
...
OnChange := EditChange;
end;
end;
 
我按照事件的处理过程写了一个过程,但是将创建的对象的事件指向过程时,说类型错误。
一个TEVENT……,一个是过程。
 
请注意OnChange: TNotifyEvent
TNotifyEvent的定义:
type TNotifyEvent = procedure (Sender: TObject) of object;
(Sender: TObject)为参数
of object表示必须是在Delphi类中声明

示例
TA=class(TAP)
private
FEdit: TEdit;
procedure EditChange(Sender: TObject);
...
public
constructor Create(AOwner: TComponent); override;
end;

constructor TA.Create(AOwner: TComponent);
begin
inherited Create(AOwner)
FEdit:= TEdit.Create(Self);
FEdit.Parent:= Self;
...
FEdit.OnChange:= EditChange;
end;


 
多人接受答案了。
 
后退
顶部