可以动态建立控件吗?!
动态建立不定数量的同一控件,可以做吗?
如果可以做,那该怎么做?!
问题点数:50、回复次数:9Top
1 楼karl()回复于 2002-09-27 21:09:58 得分 0
先声明,然后CreateTop
2 楼chechy(www.qdocuments.net)回复于 2002-09-27 21:12:30 得分 5
for i := 0 to 100 do
with TLabel.Create(Application) do
begin
Caption := 'Hello, world';
Left := 0;
Top := i * 20;
Parent := Self;
end;Top
3 楼dupenf(飞跃人生)回复于 2002-09-27 21:27:29 得分 10
var
Myedit:Tedit;
Begin
MyEdit:=TEdit.Create(Form1);
With MyEdit do
Begin
Name:=MyEdit;
Width;=200;
Left:=250;
Top:=120;
End;
End;
如果你想连续生成可以用一个循环语句,循环以上那些代码就可以了!! 注意没一次循环要把Left的值改一次,不然就都在一起了。 你只能看到一个。Top
4 楼dupenf(飞跃人生)回复于 2002-09-27 21:30:10 得分 0
刚才我写错了一个地方,不好意思:
Name:='MyEdit';Top
5 楼wjlsmail(小脖领)回复于 2002-09-27 21:34:07 得分 0
studyTop
6 楼santwy(易易)回复于 2002-09-27 21:41:15 得分 10
var
I : Integer;
itop : Integer;
ileft: Integer;
MyBtn: TButton;
Begin
itop:=2;
ileft:=2;
for I:=1 to 1000 do
begin
MyBtn:=TButton.Create(nil);
MyBtn.Parent:=Panel1;
MyBtn.Name:='MyBtn'+ IntToStr(I);
MyBtn.Top:=itop;
MyBtn.Left:=ileft;
if I mod 20 = 0 then
begin
itop:=MyBtn.Height+2;
ileft:=0;
end
ileft:=MyBtn.width+2;
//位置自己定
end;
End;Top
7 楼lvluogang(司南)回复于 2002-09-28 00:43:30 得分 0
楼上的写得很清楚,别忘了用动态控件要Free;Top
8 楼cnsuyong(小可)回复于 2002-09-28 01:08:08 得分 25
<1>完全可以不声明:
with TButton.Creare(Form1) do begin
Parent := Form1;
//...
end;
<2>释放(Free)动态控件是好的习惯,但不是必须的:因为TComponent的所有后裔都继承了它的Destroy析构器,而在此析构器中调用了DestroyComponents方法用来销毁所有以其为Parent的控件(Controls)和组件(Components)。Top
9 楼cnsuyong(小可)回复于 2002-09-29 00:19:02 得分 0
更正:“销毁以其为Parent的...”应为“销毁以其为Owner的...”。Top




