首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

新手,ScrollBox1动态创建的IMAGE如何给事件.

2013-11-09 
新手求助,ScrollBox1动态创建的IMAGE怎么给事件.............ADOQuery1.CloseADOQuery1.SQL.Text:SELEC

新手求助,ScrollBox1动态创建的IMAGE怎么给事件.............
  ADOQuery1.Close;
  ADOQuery1.SQL.Text:='SELECT * FROM img';
  ADOQuery1.Open;

  if Length(img)>0 then
    begin
      for i:= 0 to Length(img)-1 do
        begin
          FreeAndNil(img[i]);
        end;
    end;

  SetLength(img,ADOQuery1.RecordCount);

  for i:= 0 to ADOQuery1.RecordCount-1 do
    begin
      img[i]:= TImage.Create(ScrollBox1);
      img[i].Parent:= ScrollBox1;
      img[i].Stretch:= True;
      img[i].Name:= 'img'+IntToStr(i);
      img[i].Width:= 100;
      img[i].Height:= 100;
      img[i].Top:= iHtoH + (100+iHtoH) * (I div iPerLine - integer((I mod iPerLine)=0));
      img[i].Left:= iWtoW + (iWidth+iWtoW) * ((I-1) mod iPerLine);
      img[i].Picture.Assign(GetFieldImg(ADOQuery1.FieldByName('img')));
      img[i].OnClick:= //这里的事件怎么处理?我想点击ScrollBox1里的小图片就显示放大的图片到IMAGER控件里.
      ADOQuery1.Next;
    end;
[解决办法]
假定你的单元是Unit1,窗体是Form1,这么弄:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    //....
  private
    { Private declarations }
    procedure ImageClick(Sender: TObject);//自己写一个共用的事件
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ImageClick(Sender: TObject);
var i:integer;
    s:string;
begin
  s:=TImage(Sender).Name;//取出图片的名字
  i:=strtoint(copy(s,4,length(s)));//取出图片的序号
  case i of //根据序号作不同的处理
    0:begin
      //....
    end;
    1:begin
      //....
    end;
    //....
  end;
end;

procedure .... //此处是你原来的过程
begin
  //......
  for i:= 0 to ADOQuery1.RecordCount-1 do begin
    //....
    img[i].OnClick:=ImageClick; //将所有图片都关联到同一个事件
    ADOQuery1.Next;
  end;
end;

end.

热点排行