我使用控件数组,进行循环后TEdit总是将TLabel"覆盖"
请问怎么解决!有示例吗?谢谢!!

解决方案 »

  1.   

    procedure TForm1.FormCreate(Sender: TObject);
    var
      ArrayEdit:array[1..5] of TEdit;
      ArrayLabel:array[1..5] of TLabel;
      i:integer;
    begin
      for i:=1 to 5 do
      begin
        ArrayLabel[i]:=TLabel.Create(self);
        ArrayLabel[i].Parent:=self;
        ArrayLabel[i].Caption:='Label'+inttostr(i);
        ArrayLabel[i].Left:=10;
        ArrayLabel[i].Top:=i*50;
        ArrayEdit[i]:=TEdit.Create(self);
        ArrayEdit[i].Parent:=self;
        ArrayEdit[i].Text:='Text'+inttostr(i);
        ArrayEdit[i].Left:=100;
        ArrayEdit[i].Top:=i*50;
      end;
    end;
      

  2.   

    unit bu;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
        procedure ButtonClick(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    var
      i:Integer;
      btnList:array[1..20] of Tbutton;
    begin
      for i:=1 to 20 do
      begin
        btnList[i]:=Tbutton.Create(Self);
        btnList[i].Parent:=self;
        if i<=10 then
        begin
          btnlist[i].Top:=20;
          btnlist[i].Left:=i*60;
        end
        else begin
           btnlist[i].Top:=60;
           btnlist[i].Left:=(i-10)*60;
        end;
        btnList[i].Tag:=i;
        btnList[i].Caption:=IntToStr(i);
        btnList[i].Onclick:=ButtonClick ;
      end;
    end;procedure TForm1.ButtonClick(Sender: TObject);
    begin
      showmessage(IntToStr((Sender as TButton).Tag))
    end;end.