Delphi中如何动态生成指定的控件?

来源:百度知道 编辑:UC知道 时间:2024/09/28 13:58:52
我现在在编一个成绩管理系统,其中设计了一个修改数据的模块,其中在这个窗体中,设置了一个Grid控件用来显示选定的数据表中的数据。那么当选定了要修改的表后,Grid中的字段数量和字段名就会发生相应的改变,要求它们改变时相应的下边的label控件的数量和它们的caption也相应的改变为Grid中相应的表中的字段数量和字段名。

这个该如何实现,请帮帮忙。用代码如何实现?
主要是界面问题,就是说让动态的在窗体中生成label控件,这个控件的数量和Caption名是Grid中的表的字段数量和字段名。(因为我可以随时改变Lable的LableName,相应的就要让界面发生变化)如何编?

var
i:Integer;
Lab:array of TLabel;
begin
if length(Lab)> 0 then //判断是否已经创建,如果有就删除
begin
for i:=0 to Length(Lab)-1 do
begin
FreeAndNil(Lab[i]);
end;
end;

SetLength(Lab,ADOQuery1.FieldCount);
for i :=0 to ADOQuery1.FieldCount-1 do
begin
Lab[i]:=TLabel.Create(Self);
Lab[i].AutoSize:=True;
Lab[i].Parent:=Panel1;
Lab[i].Top:=Trunc((i div 8)*70); //每行8个,每个间隔70
Lab[i].Left:=Trunc((i mod 8)*70);
Lab[i].Caption:=ADOQuery1.Fields.Fields[i].FieldName;
Lab[i].Color:=clRed;
end;
我已经加了注释。

修改表结构?还是修改表中的数据?

不知道DELPHI中有没有动态的数据窗口,如果没有。告诉你个苯方法,不过保证好用!

设置多个Grid控件对应多个表。

开始只显示一个GRID ,当选中某一个表时做个判断!让和该表对应的GIRD显示,其他的全部隐藏。

DELPHI中控件都有HIDEN属性吧:)或者是VISIABLE属性。就修改这个就可以咯!!