1、我创建了一组动态Image,并载入了图片
在双击事件中我如何知道是哪个Image被点击了呢?能否传递一些参数?
TImage(sender)虽然可以对相应的Image作处理,但是不知道是创建的第
几个Image,从而获取到相应的其它信息。
2、如何让Image的双击事件和Label关联起来,即点击一个Image的时候相当于
同时点击了label,并获得Label的caption?
谢谢
在双击事件中我如何知道是哪个Image被点击了呢?能否传递一些参数?
TImage(sender)虽然可以对相应的Image作处理,但是不知道是创建的第
几个Image,从而获取到相应的其它信息。
2、如何让Image的双击事件和Label关联起来,即点击一个Image的时候相当于
同时点击了label,并获得Label的caption?
谢谢
解决方案 »
- delphi寻找函数单元方法请教
- 如果在使用TADOQuery执行存储过程后获取一个返回值
- 哪位朋友可以share一下playicq的帐号啊?我没有手机,注册不了...
- 请问哪里有mapinfo 5.0 以上的 简体中文版下载?
- 构股定理知道直角对应边长,和一个角度,求另2个直角边长
- 帮忙看看为什么通不过?
- 一个值得各位探讨的问题
- 关于QuickReport的一个高级问题
- 各位大虾,在DELPHI下可以达到协议级别的编程吗?我想用DELPHI做TCP、IP的编程
- 怎样使用query或者adoquery获得查询语句count结果
- 求Delphi 5 所有补丁 加急! 加急! 加急! 加急!
- 关于messagebox二次出现的问题解决?
在双击事件中我如何知道是哪个Image被点击了呢?能否传递一些参数?
TImage(sender)虽然可以对相应的Image作处理,但是不知道是创建的第
几个Image,从而获取到相应的其它信息。
思路:
定义一个公用的image单击事件
procedure imageclick(sender:TObject);
begin
.....
end;创建image时要赋name这个属性
如 for i:=0 to 10 do
begin
image:=Timgae.creat(self);
.....
image.name:='image'+inttostr(i);//这个是关键
image.onclick:=imageclick;
end;
然后查找时用
self.FindComponent('image1');找到这个image再执行对应的事件
这些是伪代码,你自已再稍做修改。
....
procedure Txxx. imageclick(sender:TObject);
begin
.....
end;
http://topic.csdn.net/u/20080903/16/7d3ffa6c-6376-4ed9-a20f-8eafe3e4a653.html
2.在程序中可用
Label1Click(Sender);
来点击一个Image的时候相当于同时点击了label
呵~~给你写个演示代码吧。不知你是如何动态创建一组Image的,我的代码只是启发你。另外,Label也可用类似方法创建。这个演示需要C:\下有三个bmp文件,分别是a001.bmp a002.bmp a003.bmp
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure ImgDblClick(Sender: TObject);
procedure LblClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.ImgDblClick(Sender: TObject);
begin
Showmessage(TImage(Sender).Name);
LblClick(Self.FindComponent(Format('Label%d',[TImage(Sender).Tag])));
end;procedure TForm1.LblClick(Sender: TObject);
begin
Showmessage(TLabel(Sender).Caption);
end;procedure TForm1.Button1Click(Sender: TObject);
var
I : integer;
begin
for I := 1 to 3 do
with TImage.Create(Self) do begin
Name := 'Img' + Format('%.3d',[I]);
Parent := Self;
Top := 30;
Left := 50 + 100*I;
Tag := I;
Picture.Bitmap.LoadFromFile(Format('c:\a%.3d.bmp',[I]));
OnDblClick := Self.ImgDblClick;
end;
end;procedure TForm1.FormCreate(Sender: TObject);
var
I : integer;
begin
for I := 1 to 3 do
TLabel(Self.FindComponent(Format('Label%d',[I]))).OnClick := Self.LblClick;
end;end.
for I := 1 to 3 do
TLabel(Self.FindComponent(Format('Label%d',[I]))).OnClick := Self.LblClick;
这样的,可以换成别的方法。我只是顺手用了这个方法。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls,StrUtils;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure MyImageClick(Sender: TObject);
procedure MyLabelClick(Sender: TObject);
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
procedure TForm1.MyImageClick(Sender: TObject);
var
t:Tlabel;
s:string;
i,no:integer;
begin
s:=(Sender as Timage).Name;
ShowMessage('你点击了'+s);
no:=StrToInt(RightStr(s,1));
s:='MyLabel'+IntToStr(no);
t:=FindComponent(s) as TLabel; if t<>nil then
T.OnClick(t);
end;
procedure TForm1.MyLabelClick(Sender: TObject);
begin
ShowMessage('你点击了'+(Sender as TLabel).Name+' Captoin:'+(Sender as TLabel).Caption);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
img:TImage;
lb:tlabel;
begin
for i:=1 to 5 do
begin
img:=TImage.Create(self);
img.Parent:=self;
img.Top:=100;
img.Left:=i*100+20;
img.Width:=100;
img.Height:=100;
img.Name:='MyImage'+inttostr(i);
img.Picture.LoadFromFile('d:\icno\102.ico');
img.OnClick:=MyImageClick;
lb:=TLabel.Create(self);
lb.Parent:=self;
lb.Name:='MyLabel'+inttostr(i);
lb.Caption:='MyCaption'+inttostr(i);
lb.Top:=80;
lb.Left:=i*100+20;
lb.OnClick:=MyLabelClick;
end;
end;end.