如何访问动态创建的控件??

rbofnjtu 2003-03-26 10:18:04
当我动态创建一个控件后,我如何在其他地方访问它。因为静态创建的控件可以用
Name来访问,但是动态创建的给他指定Name值后不能用Name访问。
比如:
button: TButton;
button:=TButton.create(self);
button.Name:='xyz';

然后用下列语句:
button.Caption:='aaaaa';
便提示出错。
那位高手能否解决一下,感谢!!
...全文
28 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tvhero 2003-03-26
  • 打赏
  • 举报
回复
quakeIII(我爱雷神之锤) 讲得不错,应该定义一个数组,我上次就是这么做的,定义了一个200的数组
rbofnjtu 2003-03-26
  • 打赏
  • 举报
回复
可是有可能我需要生成100个控件,所以事先定义一个控件组并不恰当
我用指针也不行,因为取得的地址每次都是一样的,也即最后生成的按钮的地址
对之前生成的仍然不能访问
quakeIII 2003-03-26
  • 打赏
  • 举报
回复
可以用自定义一个控件组
mybutton:array[1..10] of Tbutton;
quakeIII 2003-03-26
  • 打赏
  • 举报
回复
一定要写上 button.parent=form1 ; 否则不能显示
rbofnjtu 2003-03-26
  • 打赏
  • 举报
回复
关键是实现我不知道我要生成多少个Button,所以我不能为每一个需要动态生成的对象都事先声明。我只说明一个对象button。每次需要的时候都调用button:=TButton.create(self)来生成一个按钮。生成第二个按钮后,怎么访问第一个按钮,因为这时候button表示的已经是第二个按钮了,所有的操作也都只对第二个按钮有效。
rbofnjtu 2003-03-26
  • 打赏
  • 举报
回复
不好意思,刚才有一句代码写错了
button.Name:='xyz';


xyz.Caption:='aaaaa';
的时候出错
happy243 2003-03-26
  • 打赏
  • 举报
回复
把btn作为非局部变量就可以了,例如

unit Unit1;

interface

uses
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.

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧