我动态创建了一些image;
现在我想在用户点击了其中一个image时,我能捕捉到是哪个image被点击了,我该怎么做呢?在线等待,谢谢!!

解决方案 »

  1.   

    在创建的时候依次给image的tag赋值
    然后判断这个值就可以
      

  2.   

    在Onclick中发送自定义的消息
    在外面的处理函数中写一个接收该类型消息的处理过程
      

  3.   

    用onclick发送消息,每个image都是一样的click,岂不发送的说是一个消息?
      

  4.   

    还有即使我都给每个image 的tag 赋值了,但是当我在其onclick中判断时,每次都是最后一个image
      

  5.   

    整合上面两位的想法:
    定义过程:
    Tform1.imageclick(sender:Tobject);
    begin
      showmessage(inttostr((sender as Timage).tag));
    end;
    赋值:
    image1.onclick:=imageclick;
      

  6.   

    如果在创建时给Caption编码
    那么OnClick时,可以用(sender as TImage).Caption加以区别!
    哈哈..只谈想法,我也没实验过...
      

  7.   

    CAMELCN(驼子)  说的没错!用什么自己决定!
      

  8.   

    type
      TForm1 = class(TForm)
        Button4: TButton;
        procedure Button14Click(Sender: TObject);
      private
        { Private declarations }
        procedure CreateImage(Index: integer; Form: TForm);
        procedure ShowImageClick(Sender: TObject);
      public
      end;var
      Form1: TForm1;...
    procedure TForm1.Button14Click(Sender: TObject);
    var
      i: integer;
    begin
      SetLength(Image, 3);
      for i:= Low(Image) to High(Image) do
        CreateImage(i, Self);
    end;procedure TForm1.CreateImage(Index: integer; Form: TForm);
    begin
      Image[Index]:= TImage.Create(Form);
      Image[Index].Parent:= Form;
      Image[Index].Left:= 100+Index * 100;
      Image[Index].Top:= 100;
      Image[Index].Name:= 'Image'+IntToStr(Index);
      Image[Index].OnClick:= ShowImageClick;
      Image[Index].Show;
    end;procedure TForm1.ShowImageClick(Sender: TObject);
    begin
      ShowMessage((Sender as TImage).Name);
    end;
      

  9.   

    procedure TForm1.FormDestroy(Sender: TObject);
    var
      i: integer;
    begin
      for i:= High(Image) downto low(Image) do
        Image[i].Free;
      SetLength(Image, 0);
    end;