菜鸟在form1上放了100多个image,想在双击每个image时弹出窗体告诉我这个控件的名字。可要写100多不同的代码太麻烦了,请看。。。(30分)

  • 主题发起人 主题发起人 wanglonga
  • 开始时间 开始时间
W

wanglonga

Unregistered / Unconfirmed
GUEST, unregistred user!
我在image1的双击下写
showmessage(image1.name);

我在image2的双击下写
showmessage(image2.name);

我想能不能在每个image控件的双击事件下写的代码都相同,但弹出的控件名不同,好高难啊。
 
showmessage(timage(sender).name);
 
所有的Image都指向同一事件就可以了!
ImgClick(Sender: TObject);
var
sName:string;
begin

sName:=TImage(Sender).Name;
showmessage(sName);

end;
 
如ZZHI所说
 
依我看来这此方法都不是很好,看我的方法
private
procedure ImgDblClick(Sender: TObject);
//以上申明
procedure Tfrom1.ImgDblClick(Sender: TObject);
begin
showmessage(TImage(Sender).Name);
end;
//在FormCreate事件写到
procedure Tfrom1.FormCreate(Sender: TObject)
var i:integer;
begin
for i:=0 to ComponentCount-1 do
if Self.Components.ClassNameIs('TImage') then
TImage(Components).OnDblClick :=ImgDblClick;
end;
 
同意ZZHI,这其实就是巧用对象的类型转换来实现的.这个方法有时会很有用的.
 
接受答案了.
 

Similar threads

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