我用一个循环动态创建了10个image,分别加入了图片。代码如下:
for i:=0 to 9 do
begin
si:=TImage.Create(self); //si是已定义的一个TImage
si.Parent:=self;
si.Left:=100+100*i;
si.Top:=100;
si.Stretch:=true;
si.PopupMenu:=PopupMenu1; //PopupMenu1是已有的右键菜单
si.Picture.LoadFromFile(xxxx.jpg);
end;现在在右键菜单上有一个删除按钮,我想当在某一张图片上按右键下并选择删除按钮的时候就把当前的这张图片删除,应该怎么实现呢?把si进行Free那不行的。
for i:=0 to 9 do
begin
si:=TImage.Create(self); //si是已定义的一个TImage
si.Parent:=self;
si.Left:=100+100*i;
si.Top:=100;
si.Stretch:=true;
si.PopupMenu:=PopupMenu1; //PopupMenu1是已有的右键菜单
si.Picture.LoadFromFile(xxxx.jpg);
end;现在在右键菜单上有一个删除按钮,我想当在某一张图片上按右键下并选择删除按钮的时候就把当前的这张图片删除,应该怎么实现呢?把si进行Free那不行的。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
PopupMenu1: TPopupMenu;
sa1: TMenuItem;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure sa1Click(Sender: TObject);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
ttt : Timage;
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
si : TImage;
i : integer;
begin
for i:=0 to 9 do
begin
si:=TImage.Create(self); //siÊÇÒѶ¨ÒåµÄÒ»¸öTImage
si.Parent:=self;
si.Name:='Image_'+inttostr(i);
si.Left:=100+30*i;
si.Top:=100;
si.Width:=20;
si.Height:=80;
si.Stretch:=true;
si.PopupMenu:=PopupMenu1; //PopupMenu1ÊÇÒÑÓеÄÓÒ¼ü²Ëµ¥
si.OnMouseUp:=Image1MouseUp;
si.Picture.LoadFromFile('c:/123.bmp');
end;
end;procedure TForm1.sa1Click(Sender: TObject);
begin
ttt.Free;
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
s : string;
begin
ttt:=(sender as Timage);
end;end.
它用来捕获当前鼠标所点的是哪个Image控件~~
ttt就是用来保存所捕获的Image控件salClick事件就是右键弹出菜单的删除事件~~
用来删除ttt控件~~上面那位兄台的思路是对的~~
不知道是否通过测试~~
这就要你自己来测试了~~