怎样给动态创建的image,编写事件处理程序?急!!!请各位大侠赐教,散分了。(100分)

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

wuchmin

Unregistered / Unconfirmed
GUEST, unregistred user!
动态创建了多个image,怎样给每一个image填写各自的事件处理程序
 
简单啦
private
procedure ButtonsClick(Sender: TObject);

生成过程:
for i := low(pnlArr) to high(pnlArr) do
begin
lb := TLabel.Create(self);
lb.Parent := self;
lb.Transparent := true;
lb.AutoSize := false;
lb.Left := cleft;
lb.Width := cwidth;
lb.Height := cheight;
lb.OnClick := ButtonsClick;//就是这一句了
end;

调用过程:
procedure TForm1.ButtonsClick(Sender: TObject);
var
index: integer;
begin
index := TWinControl(Sender).Tag - 100;
if MessageDlg('将进行' + pnlArr[index].name + '的安装,是否继续', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
ShellExecute(Application.Handle, 'Open', pchar(pnlArr[index].exename), nil, nil, SW_SHOWNORMAL);
end;
 
定义一个公用的过程,然后其他image都去调用就可以了
procedure TForm1.ImagesClick(Sender: TObject);
begin
//
end;
方法就是楼上所说的
image1.OnClick := ImagesClick;
image2.OnClick := ImagesClick;
……
imagen.OnClick := ImagesClick;
 
var
img: TImage;
begin
img := TImage.Create;
try
img.Picture.LoadFromFile('');
...
except
...;
end;
end;

LineTo默认起点是0, 0, 可以用MoveTo移动
OnMouseUp/OnMouseMove,可以得到Mouse坐标
 
procedure TForm1.ImagesClick(Sender: TObject);
begin
Case TImage(Sender).tag Of
0:Begin end;
1:Begin end;
End;
end;
 
[:)],解决了
 
这个问题解决了,散分了
还有一个问题,不知几位高手会不会。
哪位做过image的拖动程序?有没有源代码可以贴一下,我做了,但是有问题。不知怎么回事。前提是dragmode:=mbManual
 
多谢各位,解决了
 
image的拖动程序有没有解决啊,兄弟们,给我发一个好吗,我的email是zsgkw@126.com
 
后退
顶部