我用一个循环动态创建了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那不行的。

解决方案 »

  1.   

    首先要找到,建议写一个过程,根据sender来判断是哪一个控件,然后再执行删除操作,
      

  2.   

    unit Unit1;interfaceuses
      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.
      

  3.   

    能不能说的详细点,我知道是要用sender来判断的,但是判断出来了怎么写删除呢?总不好写sender.free吧
      

  4.   

    Image1MouseUp是动态创建Image控件的事件~~
    它用来捕获当前鼠标所点的是哪个Image控件~~
    ttt就是用来保存所捕获的Image控件salClick事件就是右键弹出菜单的删除事件~~
    用来删除ttt控件~~上面那位兄台的思路是对的~~
    不知道是否通过测试~~
    这就要你自己来测试了~~