当我动态创建一个控件后,我如何在其他地方访问它。因为静态创建的控件可以用
Name来访问,但是动态创建的给他指定Name值后不能用Name访问。
比如:
button: TButton;
button:=TButton.create(self);
button.Name:='xyz';然后用下列语句:
button.Caption:='aaaaa';
便提示出错。
那位高手能否解决一下,感谢!!

解决方案 »

  1.   

    把btn作为非局部变量就可以了,例如unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        btn: TButton;
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
        btn := TButton.Create(Self);
        btn.Parent := Self;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
        btn.Caption := 'test';
    end;end.
      

  2.   

    不好意思,刚才有一句代码写错了
    button.Name:='xyz';用
    xyz.Caption:='aaaaa';
    的时候出错
      

  3.   

    关键是实现我不知道我要生成多少个Button,所以我不能为每一个需要动态生成的对象都事先声明。我只说明一个对象button。每次需要的时候都调用button:=TButton.create(self)来生成一个按钮。生成第二个按钮后,怎么访问第一个按钮,因为这时候button表示的已经是第二个按钮了,所有的操作也都只对第二个按钮有效。
      

  4.   

    一定要写上 button.parent=form1 ; 否则不能显示
      

  5.   

    可以用自定义一个控件组
    mybutton:array[1..10] of Tbutton;
      

  6.   

    quakeIII(我爱雷神之锤) 讲得不错,应该定义一个数组,我上次就是这么做的,定义了一个200的数组