永发信息网

DELPHI 给动态创建的控件指定onclick事件处理过程,如何传递自己的参数

答案:2  悬赏:60  手机版
解决时间 2021-11-09 08:52
DELPHI 给动态创建的控件指定onclick事件处理过程,如何传递自己的参数
最佳答案
label的onClick事件 对应的只有Sender:Tobject 一个参数
你的 LabOnClick(Sender:Tobject,msgStr:String);

怎么也是对不起来的。所以不行

要么 1 重写一个label
2 我惯用的偷懒办法
newLabel.OnClick:=LabOnClick(Sender);
然后每个label的hint不一样 每次点击
就获取其中的hint

procedure TForm1.LabOnClick(Sender: TObject);
begin
showmessage(Tlabel(Sender).Hint);
end;
实际上 我动态创建很多控件,经常拿tag来区分的
比如说
设备1 ID是3 newLabel.tag:=3;
设备2 ID是9 newLabel.tag:=9;
事件发生后 就根据 Tlabel(Sender).tag 我就知道是哪个设备被点击了
不用String字段
全部回答
告诉你一个本办法,很好使,而且在改代码的时候很方便,特别使用于动态加好多控件的。
例如,需要动态建立50个label,点击的时候出现对话框,提示本laibel的标题。
你先在form上添加一个label,名称为label0,编写label的代码:
procedure TForm1.Label1Click(Sender: TObject);
begin
ShowMessage(TLabel(sender).Caption);
end;
生成50个label并赋予点击事件:
procedure TForm1.btn1Click(Sender: TObject);
var labels : array[1..50] of TLabel;
begin
for i:=1 to 50 do
labels[i] = TLabel.Create(nil);
labels[i].OnClick := label1.OnClick;
end;
至于位置、父容器什么你再编代码设置。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
东明县距离界首市有多少公里
具以沛公言报项王中的通假字
初学爵士舞要领 。
我早上六点四十到酒店开房,住到两点店家告诉
求10本励志的书
一身蓝光多神奇,两排牙齿细又密,只听一声砰
和传奇再续差不多意思的成语
青海目前有多少人实现安居?
高力威双边磨边机维修电话
(200+8)×5的简便方法
睡觉老是偏着脖子是什么原因
顺丰速运(长安北街与954县道交叉口西150米顺
晒干的虾怎么做好吃
西洋参的尾和头吃有什么区别
怎么做好网络直播?
推荐资讯
加工厂同样一种零件,王师傅8个小时加工了7个
某县在实施“村村通
且末县通睿机动车驾驶员培训有限公司地址有知
8斤东西申通快递要多少钱如何计费
找一个老款的LG手机,直板的,方方的,是黑色
元肖节是几月几日?要吃什么?有什么活动
驾驶证C照和E照合在一起,怎么扣分
有谢字读音的宠物名字
玛丽艳网上销售的是正品吗
地龟的人工饲养
回答图片中的问题
怎样把华益金安时钱撤出来
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?