Delphi中如何动态生成指定的控件?
我现在在编一个成绩管理系统,其中设计了一个修改数据的模块,其中在这个窗体中,设置了一个Grid控件用来显示选定的数据表中的数据。那么当选定了要修改的表后,Grid中的字段...
我现在在编一个成绩管理系统,其中设计了一个修改数据的模块,其中在这个窗体中,设置了一个Grid控件用来显示选定的数据表中的数据。那么当选定了要修改的表后,Grid中的字段数量和字段名就会发生相应的改变,要求它们改变时相应的下边的label控件的数量和它们的caption也相应的改变为Grid中相应的表中的字段数量和字段名。
这个该如何实现,请帮帮忙。用代码如何实现?
主要是界面问题,就是说让动态的在窗体中生成label控件,这个控件的数量和Caption名是Grid中的表的字段数量和字段名。(因为我可以随时改变Lable的LableName,相应的就要让界面发生变化)如何编? 展开
这个该如何实现,请帮帮忙。用代码如何实现?
主要是界面问题,就是说让动态的在窗体中生成label控件,这个控件的数量和Caption名是Grid中的表的字段数量和字段名。(因为我可以随时改变Lable的LableName,相应的就要让界面发生变化)如何编? 展开
2个回答
展开全部
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;
我已经加了注释。
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;
我已经加了注释。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询