我用Tedit.create创建Edit控件怎么不显示。
如果我动态创建一个控件数组怎么处理他的事件。

解决方案 »

  1.   

    edit1 := TButton.Create(Form1);
    edit1.Parent := Form1;
      

  2.   

    创建完必须指定Parent属性,这个属性负责绘制你创建的Edit,如果不指定,没人绘制,自然看不到了!
      

  3.   

    type
      editarray= array of tEdit;procedure TForm1.Button1Click(Sender: TObject);
    var
      i,n:integer;
      edit:editarray;
    begin
    n:=5;
    setlength(edit,n);
    edit[0]:=tedit.Create(self);
    edit[0].Parent:=form1;
    edit[0].Top:=self.ClientRect.Top+50;
    edit[0].Left:=self.ClientRect.Left+50;
    for i:=1 to n-1 do
    begin
      edit[i]:=tedit.Create(self);
      with edit[i] do
      begin
        parent:=form1;
        Top:=30+edit[i-1].Top;
        Left:=self.ClientRect.Left+50;
      end;
    end;
      

  4.   

    procedure TForm1.MyClick(Sender: TObject);
    var
    i:integer;
    nam:string;
    begin
      i:=strtoint(Trim(Copy(TButton(Sender).Name,7,3)));
      TButton(Sender).Visible:=not TButton(Sender).Visible;
      i:=i+1;
      nam:='button'+inttostr(i);
      case i do
       i:.....
    end;procedure TForm1.FormCreate(Sender: TObject);
    var
      i:integer;
    begin
      for i:=1 to 100 do
        begin
          a[i]:=tbutton.Create(self);
          with a[i] do
          begin
            Top:=(i-1) div 10*20;
            Left:=(i-1) mod 10*20;
            Height:=20;
            Width:=20;
            Name:='button'+inttostr(i);
            Caption:='';
            Parent:=Panel2;
            OnClick:=MyClick;
          end;
        end;
        Panel2.AutoSize:=true
    end;
      

  5.   

    改一下:Panel2.AutoSize:=true;//掉了个分号
    事件中根据 i 的值不同,做不同的事,功能很象动态数组
      

  6.   

    TButton(FindComponent('控件名称'))
    //////////////////////////////////
    上面的函数可得到控件
      

  7.   

    关键是创建后要指定parent属性,这样才能保证你的新控件是放在什么地方上的