你没有指定Img的位置和大小。

解决方案 »

  1.   

    因为你的Img是一个动态数组,所以再使用必须先开辟空间,你只要稍作修改就行procedure TForm1.FormCreate(Sender: TObject);
    var
      i:integer;
    begin
      SetLength(Img, 11); //开辟空间 下标从0开始
      for i:=1 to 10 do
      Begin
        img[i]:= TImage.Create(Self);
        img[i].parent := Panel1;
        img[i].Stretch:=True;
        img[i].Picture.LoadFromFile('c:\a.bmp');
        img[i].OnClick := MyClick;
      end;
    end;
      

  2.   

    程序不知道你的IMG往那儿显示!你给它一个位置;
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      a:TImage;
    begin
      if OpenPictureDialog1.Execute then
      Begin
        a:= TImage.Create(Self);
        a.parent := Panel1;
        a.Stretch:=True;
        a.Picture.LoadFromFile(OpenPictureDialog1.FileName );
        a.OnClick := MyClick;
        a.Left :=Panel1.Left ;
        a.Top :=Panel1.Top ;
        a.Width := Panel1.Width;// 20;
        a.Height:= Panel1.Height;// 30;
        showmessage('aa');
        a.show;
      end;
    end;
      

  4.   

    这个会更好点;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      A:TImage;
    begin
      if OpenPictureDialog1.Execute then
      Begin
        A:= TImage.Create(Self);
        A.parent := Panel1;
        A.Stretch:=True;
        A.Picture.LoadFromFile(OpenPictureDialog1.FileName );
        A.OnClick := MyClick;
        A.Left := 16;
        A.Top :=8 ;
        A.Height := 105;
        A.Width := 105;
      end;
    end;
      

  5.   

    完整的:提醒一点,应该注意风格
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls,extctrls, ExtDlgs, Buttons;type
      TForm1 = class(TForm)
        Label1: TLabel;
        Label2: TLabel;
        Panel1: TPanel;
        procedure FormCreate(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
        Img : Array of TImage;
        procedure MyClick(Sender : TObject);
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormCreate(Sender: TObject);
    var
      I : Integer;
    begin
      SetLength(Img, 11); //开辟空间 下标从0开始
      for I := 1 to 10 do
      Begin
        Img[I]:= TImage.Create(Self);
        Img[I].Parent := Panel1;
        Img[I].Stretch:=True;
        Img[I].Transparent := True;
        Img[I].Picture.LoadFromFile('c:\a.bmp');
        Img[I].OnClick := MyClick;
        Img[I].Left := 5*I;
        Img[I].Top :=5*I;
        Img[I].Width := 20;
        Img[I].Height :=10;
      end;
    end;procedure TForm1.MyClick(Sender: TObject);
    begin
      showmessage('click on dynamic image')
    end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      I :Integer;
    begin
      for I :=1 to 10 do
        Img[I].Free;
    end;end.
      

  6.   

    还是不行,
    但是加一个button,在buttonclick中
    写上fromcreate中的代码就能实现
    什么原因呢?我的d6
      

  7.   

    FormCreate事件:It initializes the detail window so that the Details button works correctly.
    就是说在FormCreate事件发生后,Img组件才能正确执行。