在线等候 D6下自制控件,用TPanel+TButton,在处理事件时的问题

yuanyingtanxi 2002-07-01 02:40:32
自已作的控件
type
TMyPanel = class(TPanel)
private
palenbutton:TButton;
...
property OnButtonClick :TNotifyEvent read GetOnButtonOnClick write SetOnButtonOnClick;
....
constructor TDrawTable.Create(AOwner:TComponent);
begin
inherited Create(AOwner);
pbutton:=TButton.Create;
pbutton.Parent:=Self;
...
end;
//下面设置按钮的点击事件
function TMyPanel.GetOnButtonOnClick:TNotifyEvent;
begin
result:=pbutton.OnClick;
end;
procedure TMyPanel.SetOnButtonOnClick(Value:TNotifyEvent);
begin
pbutton.OnClick:=Value;
end;
程序大致是这样
然后问题出来了
在一个窗口程序里使用这个控件时,
testpanel:=TMypanel.cteate(self);
testpanle.OnButtonClick:=OnClick;
....

那个OnClick是这样的
procedure TForm.OnClick(Sender :TObject);
begin
这里的Sender是Button了,我想取Panel.Tag该怎么办
end;

...全文
66 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
yansea 2002-07-02
  • 打赏
  • 举报
回复
TNewNotifyEvent = procedure (Sender:TObject;var tag:integer) of object;

function TMyPanel.GetOnButtonOnClick:TNewNotifyEvent;
begin
tag := Self.tag;
result:=pbutton.OnClick;
end;
//新定义一个类方法;
procedure TForm.OnClick(Sender :TObject,tag : integer;);
begin
//tag也是自己的tag了
//这里的Sender是Button了,我想取Panel.Tag该怎么办
end;
我可没试过啊,不知道行不行~~先祝你好运吧
yuanyingtanxi 2002-07-02
  • 打赏
  • 举报
回复
TMypanel(tbutton(sender).owner).tag
yuanyingtanxi 2002-07-02
  • 打赏
  • 举报
回复
To:yansea(思宏),谢谢,这是一种思路,我想试试
To:netlib(河外孤星)谢谢,麻烦你了,你的水平比我高,脾气可不太好,动不动一副不耐烦的样子。
To:所有程序人,人,一定要靠自已,拉下脸皮来问还得让人家损

算了,自已想办法吧
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
netlib(河外孤星) 麻烦你试一下

分数可以再加,我就是想解决问题
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
在Create时
pbutton.Parent:=Self;
这句有没有办法能改一下
我试了基于TComponent和TWinControl,然后自已在CREATE里建Panel,都有问题

强制转换具体怎么实现呢
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
在Create时
pbutton.Parent:=Self;
这句有没有办法能改一下
我试了基于TComponent和TWinControl,然后自已在CREATE里建Panel,都有问题

强制转换具体怎么实现呢
netlib 2002-07-01
  • 打赏
  • 举报
回复
这是问题吗?
按照你这样作的话tbutton(sender).parent在内存中应该是tpanel
但表示形式是twincontrol,如果要用也要强制类型转换
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
如果把Tbutton作为属性的话,那么,TButton所有的属性都可以在设计期看到
可是我只想要他的单击事件,别的不想让动呀
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
如果把Tbutton作为属性的话,那么,TButton所有的属性都可以在设计期看到
可是我只想要他的单击事件,别的不想让动呀
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
TO: netlib(河外孤星)
tbutton(sender).parent.tag是TButtonControl,不是Tpanel
netlib 2002-07-01
  • 打赏
  • 举报
回复
什么?乱?你对delphi机制熟悉不?
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
这样不好吧,乱七八糟的一大堆
我不想这样作,还有别的方法么
netlib 2002-07-01
  • 打赏
  • 举报
回复


tbutton(sender).parent.tag就可以了。
netlib 2002-07-01
  • 打赏
  • 举报
回复
你应该让button为tmypanel的属性,
而且button的panrent应该是tmypanel
这时要取panel.tag,
就写button.parent.tag即可
yuanyingtanxi 2002-07-01
  • 打赏
  • 举报
回复
这个控件说白了就是一个panel上面画了一个button
继承了button的事件,在buttonr的事件里怎么取得panel和tag

5,939

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧