求助:我自己写了一组件,关于组件事件有些问题。(100分)

  • 主题发起人 主题发起人 bys
  • 开始时间 开始时间
B

bys

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一组件,继承TWinControl,其中包括几个其它可视组件:TPanel、TLabel、TSpinEdit等封装在一起,对外输出单击事件myclick,无论用户点击哪个(TPanel、TLabel、TSpinEdit),都触发myclick,事件中有一参数(myId:Integer)。如何实现?
 
定义一个标准OnClick过程去调用你的myClick(Sender, MyID)不行吗?
把这个OnClick过程赋给TPanel、TLabel、TSpinEdit
 
在组件设计中:
第一步:
type
TMyClickEvent = procedure(Sender: TObject; myId: Integer) of object;
第二步:
private
FOnMyClick :TMyClickEvent;
procedure MyClick(Sender: TObject);
第三步:
published
property OnMyClick :TMyClickEvent read FOnMyClick write FOnMyClick;
第四步:
procedure TForm1.MyClick(Sender: TObject);//把TForm1改为你组件类名
var
myId :integer;
begin
myId := 0;
if (Sender is TPanel) then myId:=1;
if (Sender is TLabel) then myId:=2;
if (Sender is TSpinEdit) then myId:=3;
if Assigned(FOnMyClick) then FOnMyClick(Self, myId);
end;
第五步:
在组件中构建你的TPanel、TLabel、TSpinEdit等时,将它们的Click事件设置为MyClick.
例:Panel1.OnClick:= MyClick;

还有不明白的吗?
 
感谢两位帮助,尤其感谢yostgxf!!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部