例如动态设定了一个image数组ImageArray,如何对数组中的元素的事件进行响应?例如在imageArray[0]上点击,引发一个事件。

解决方案 »

  1.   

    procedure DoImageClikc(Sender :TObject);
    begin
    ...
    end;然后在ImageArray创建时写
    OnClick ;=DoImageClick;
      

  2.   

    要先自定义一个参数与组件事件的参数相同的的过程。
      procedure ImageClick(obj :TObject); 
    当动态创建组件时直接赋值就行了。
      imageArray[0].OnClick :=ImageClick;
      

  3.   

    如果要发布这个事件,那么这样
    TOnImageClick =procedure(Sender :TObject; Index :Integer) of object;
     
      published
        property OnImageClick :TOnImageClick read FOnImageClick write FOnImageClick;procedure TYourClass.DoImageClick(Sender: TObject);
    begin
      if Assigned(FOnImageClick) then FOnImageClick(Sender,TImage(Sender).Tag);
    end;其中Tag值代表是哪个编号的Image  for I:=0 to ACount -1 do
      with TImage.Create(Self) do
      begin
        Tag :=I;
        OnClick :=DoImageClick;
      end;
      

  4.   

    procedure DoImageClikc(Sender :TObject);
    begin
    ...
    end;然后在ImageArray创建时写
    OnClick ;=DoImageClick;