请问怎样在程序运行时动态的生成控件,比如在form1中动态生成Checkbox?(5分)

  • 主题发起人 主题发起人 dontal
  • 开始时间 开始时间
D

dontal

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎样在程序运行时动态的生成控件,比如在form1中动态生成Checkbox?
 
先声明一个控件变量:
var
Form1: TForm1;
chk:TCheckBox; //可放在这儿

implementation
//////////////////////////////////////
以下是创建:
procedure TForm1.Button2Click(Sender: TObject);
begin
chk:=tcheckbox.Create (self);
chk.parent:=self;
chk.visible:=true;
chk.left:=10;
chk.top:=10;
chk.height:=20;
chk.font.size:=12;
chk.caption:='是否选中';
end;
 
可是我想生成的控件的个数也是不确定的,那要看库中满足条件的记录数,有多少条记录
就有多少个控件。那么在声明时怎么搞。
 
可以先定义一个checkbox类,在需要的地方再声明一个实例!!
 
声明控件数组:
checkbox:array of Tcheckbox;
你想要几个就几个:
setlength(checkbox,N)
n可以是变量,可随时进行设置。
 
同意jsxjd 的!
 
要动态生成CheckBox似乎用链表更自然些,delphi是有指针的嘛

我觉得这个程序动态生成这么多CheckBox,倒是应该在
它们的显示方式控制上要多考虑一些。

Type
pTListCheckBox=^TListCheckBox;//定义指向结构体的指针类型
TListCheckBox=record
next:pTListCheckBox;
chk:TCheckBox;
end;//
END;

VAR

form1:Tform;
chklist,p1,p2:pTListCheckBox;

implementation

procedure form1.buttonclick(Sender: TObject);
begin
new(p1);
p1^.chk.parent:=self;
.
.
.
p1^.chk.caption:='....';

chklist:=p1;
p2:=p1;
new(p1);
p2.next:=p1;
.
.
.
end;
 
接受答案了.
 
后退
顶部