控件事件(只有这么点分了)(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就可以强制转化成他的类的。
我相信一定有好的办法。
 
多人接受答案了。
 
顶部