控件事件(只有这么点分了)(19分)

  • 主题发起人 主题发起人 coolingxyz
  • 开始时间 开始时间
C

coolingxyz

Unregistered / Unconfirmed
GUEST, unregistred user!
unit mymb;

type
Tmymb = class(TWincontrol)

private
FPanel : TPanel;

public:
Property OnClick : TNotifyEvent read GetOnMbClick Write SetOnMbClick;


Procedure Tmymb.SetOnMbClick(Value : TNotifyEvent);
begin
FPanel.OnClick := Value;
end;

function Tmymb.GetOnMbClick : TNotifyEvent;
begin
Result := FPanel.OnClick ;
end;
//还有其他一些标准控件。

我这里只是重定向了Fpanel的onclick的事件,当我在主窗口中生成了一系列的mymb,要把mymb的序号赋值给mymb.Fpanel.tag := i; ,然后当点击的时候,mymb[TPanel(sender).Tag ]才能知道是哪个mymb被点击了。
应该怎么写才能使我的控件有自己的真正事件。

这样是不是能表示清楚一点,假设我的Tmymb 的结构是这样的:
Tmymb
{
Panel : Tpanel;
edit : Tedit;
}

窗体上生成了一系列的Tmymb 实例。
我现在单击的时候只能知道是哪个Tmymb里的Panel被单击了,那我是不能知道edit的一些属性的。
我现在想实现的就是要知道是哪个Tmymb 被单击了,那么我就能知道Panel 的属性,也能知道Edit的属性了。

这样可以了么?
请大家帮忙呀。
 
利用Sender参数
TPanel(Sender)
TEdti(Sender)
看看
 
TEdit(TPanel(sender).parent.edit) 不能获得 Edit 吗?
 
可能是我的想法有问题。但我觉得我的想法还是有点道理的呀。
好比我有一个容器,里面放了一些标准控件,当我点击这个容
器的时候是重定向了其中的一个标准控件panel的事件,那么这
个sender是指向这个panel的。我的意思就是要自己定义一个
TNotifyEvent,指向我自己的这个容器,当我点击的时候我就
知道是我的哪个控件被点击了(因为同时可能生成了很多的控
件实例)。
 
to jsxjd

这样是可以的。但如果我的这个panel上面还有其他的控件的话,就不能触发这个事件了。
 
我看到别人写的控件,点击事件里的sender就可以强制转化成他的类的。
我相信一定有好的办法。
 
多人接受答案了。
 

Similar threads

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