动态创建控件

zjslls2002 2003-09-23 10:23:40
我用Tedit.create创建Edit控件怎么不显示。
如果我动态创建一个控件数组怎么处理他的事件。
...全文
18 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hawk_js 2003-09-23
  • 打赏
  • 举报
回复
关键是创建后要指定parent属性,这样才能保证你的新控件是放在什么地方上的
dulei115 2003-09-23
  • 打赏
  • 举报
回复
TButton(FindComponent('控件名称'))
//////////////////////////////////
上面的函数可得到控件
dulei115 2003-09-23
  • 打赏
  • 举报
回复
改一下:Panel2.AutoSize:=true;//掉了个分号
事件中根据 i 的值不同,做不同的事,功能很象动态数组
dulei115 2003-09-23
  • 打赏
  • 举报
回复
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;
noil0125 2003-09-23
  • 打赏
  • 举报
回复
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;
FrameSniper 2003-09-23
  • 打赏
  • 举报
回复
创建完必须指定Parent属性,这个属性负责绘制你创建的Edit,如果不指定,没人绘制,自然看不到了!
lydmc 2003-09-23
  • 打赏
  • 举报
回复
edit1 := TButton.Create(Form1);
edit1.Parent := Form1;

5,386

社区成员

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

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