如题

解决方案 »

  1.   

    可以

    Button:array[1..10]of TButton;
      

  2.   

    Delphi自带有一个控件数组,存着某个容器下的所有控件:
    Form1.Component[i]
      

  3.   

    首先你要明白控件数组的含义,比如我有十个相同的控件,但是我的我只需要一个处理过程来处理它,这时我可以使用空间数组,在VB中分别设置INDEX然后你直接双击任意一个就可以了,那么这些控件的所有单击事件都有这个来处理!当然这只是简便而已,DELPHI也可以实现这种功能的,不过也有点数组成员是控件的意思!!就象u2m(UpToMe)说的!!!!!
      

  4.   

    http://expert.csdn.net/Expert/topic/1465/1465429.xml?temp=.8167078
      

  5.   

    TButton(FindComponent('btnOK'))///相当于btnOK
      

  6.   

    procedure CreateArrayVcl;
    Var
      AButton:array[1..10]of TButton;
      i: Integer;
    Begin
      for i:=1 to 10 do
      begin
        AButton[i]:=Tbutton.create(application);//创建TButton
        ...
      end; 
    End;
      

  7.   

    可以!
    edit: array[1..10]of TEdit;
      

  8.   

    也可以使用TLIST
    也可以使用Button:array of TButton;动态数组
      

  9.   

    //怎么在Form上没有显示出来
    procedure TForm1.Button1Click(Sender: TObject);
    var
      i: Integer;
    Begin
      for i:=1 to 10 do
      begin
        edit[i]:=Tedit.create(application);//创建TButton
        edit[i].Visible:=true;
        edit[i].Width:=100;
        edit[i].Height:=50;
        edit[i].Top:=100;
        edit[i].Left:=100*i+50;
        edit[i].Text:=IntToStr(i);
      end;end;
      

  10.   

    edit[i]:=Tedit.create(form1);
    edit[i].parent:=form1;
      

  11.   

    请问如何将过程与刚产生的控件数组的Click事件相联接,即Click事件发生后执行指定的过程?
      

  12.   

    unit unit1;
    interface
    uses
      windows,messages,sysutils,classes,graphics,controls,forms,dialogs,stdctrls;
    type
      TForm1 =class(TForm)
       procedure FormCreate(Sender:TObject);
      private
       {private declarations}
        MakeEdit:array [0..100] of TEdit;
        iMakeEditCount:integer;
        procedure MakeEditPress(Sender:TObject;var Key:char);
      public
      {public declaration}
      end;var
      Form1:TForm1;
    implementation
    {$R *.DFM}procedure TForm1.FormCreate(Sender:TObject);
    var
     i:integer;
    begin
      iMakeEditCount:=3;
      for i:=0 to iMakeEditCount do
      begin
          MakeEdit[i]:=TEdit.Create(Form1);
          MakeEdit[i].parent:=Form1;
          MakeEdit[i].Font.Color:=clGreen;
          MakeEdit[i].Name:='Edit'+InttoStr(i);
          MakeEdit[i].Text:='';
          MakeEdit[i].Left:=Form1.Left+60;
          MakeEdit[i].Top:=Form1.top+10+30*i;
          MakeEdit[i].OnKeyPress:=MakeEditPress;
        end;
    end;procedure TForm1.MakeEditPress(Sender:TObject;var Key:char);
    var
      sEditName:String;
      iEditNum:integer;
     begin
        sEditName:=(Sender as TEdit).Name;
        iEditNum:=strtoint(Copy(sEditName,5,Length(sEditname)-4));
        if Key = #13 then
          if iEditNum < iMakeEditCount then
              MakeEdit[iEditNum+1].SetFocus;
     end;
    end.
      

  13.   

    如何将控件数组的Index值,传递给被调用的过程中去?
      

  14.   

    你原程序中:edit[i]:=Tedit.create(application):
      你觉得这行有问题吗?我觉得应该是:edit[i]:=Tedit.create(FORM1):
      

  15.   

    控件有一个Tag属性, 
    for i:=0 to iMakeEditCount do
      begin
          MakeEdit[i]:=TEdit.Create(Form1);
          .......
          MakeEdit[i].Tag = Inttostr(i);   // 等于VB的Index.
        end;.....procedure TForm1.MakeEditPress(Sender:TObject;var Key:char);
    var
      sEditName:String;
      iEditNum:integer;
     begin
        sEditName:=(Sender as TEdit).Name;
        iEditNum:=strtoint(Copy(sEditName,5,Length(sEditname)-4));
        if (Key = #13) and ((Sender as TEdit).tag = 2) then  // 第3个Edit上按回车时
          if iEditNum < iMakeEditCount then
              MakeEdit[iEditNum+1].SetFocus;
     end;
    end.