各位大虾,我想动态创建两个控件数组,用于显示两列Label,但运行时都有问题,前一个的Label列可以显示出来,但他们的Caption显示错误,本来应该显示“排放源1”、“排放源2”之类,可实际全部显示“排放源”。后面一Label列干脆就在窗体上显示不出来了。请大家帮忙。代码如下:m:=strtoint(edit1.text);
for i:=1 to m do
begin
xiansi[i]:=tlabel.Create(self);
xiansi[i].Parent:= source;
xiansi[i].Width:= 54;
xiansi[i].Caption:='排放源'+ inttostr(i);
xiansi[i].AutoSize:= false;
xiansi[i].Left:= 48;
xiansi[i].Height:= 13;
xiansi[i].Top:= 56+40*(i-1);
end;n:=strtoint(edit2.text);
for j:=1 to n do
begin
xiansi_2[j]:=tlabel.Create(self);
xiansi_2[j].Parent:= control1;
xiansi_2[j].Width:= 54;
xiansi_2[j].Caption:='控制点'+ inttostr(j);
xiansi_2[j].AutoSize:= false;
xiansi_2[j].Left:= 440;
xiansi_2[j].Height:= 13;
xiansi_2[j].Top:= 56+40*(j-1);
xiansi_2[j].Visible:=true;
end;
for i:=1 to m do
begin
xiansi[i]:=tlabel.Create(self);
xiansi[i].Parent:= source;
xiansi[i].Width:= 54;
xiansi[i].Caption:='排放源'+ inttostr(i);
xiansi[i].AutoSize:= false;
xiansi[i].Left:= 48;
xiansi[i].Height:= 13;
xiansi[i].Top:= 56+40*(i-1);
end;n:=strtoint(edit2.text);
for j:=1 to n do
begin
xiansi_2[j]:=tlabel.Create(self);
xiansi_2[j].Parent:= control1;
xiansi_2[j].Width:= 54;
xiansi_2[j].Caption:='控制点'+ inttostr(j);
xiansi_2[j].AutoSize:= false;
xiansi_2[j].Left:= 440;
xiansi_2[j].Height:= 13;
xiansi_2[j].Top:= 56+40*(j-1);
xiansi_2[j].Visible:=true;
end;
解决方案 »
- 高人请进------用GDI修剪图片?
- webbrowser 连续执行 事件
- 报表的存取
- 主从表的子表增加数据后,重新建立主从关系的问题
- 用delphi7+ado+FastReport开发的应用程序怎样打包发布啊?
- 如何将程序缩小后进入到右下角的任务栏?(求学中)
- 请问一个窗体问题:一个主窗体和两个子窗体,程序运行时主窗体和子窗体同时显示,两个子窗体上下排列,请问如何实现?
- 菜鸟问题,数据库设计中如何用StringGrid替换DBGrid?
- dbcombobox和dblookupcombobox分别适合用于何种情况下?
- 一个奇怪的问题?我是没有头绪,有谁能解?
- 准备月底回家,回家修炼技术......
- 请大师解决DBGridEh底部汇总时出现错误的问题,多谢!
你这样写是不对的。数组只能存放数值,你要存的是控件,或者说是指向控件的指针。换成TList是绝对没有问题的
source, control1 都变成 self;
xiansi, xiansi_2 都定义成动态数组,同时在取得m和n后设置长度。
结果没有问题。问题重点:
1、字体原因,你将source和control1的字体设为宋体试试;
2、control1可能不够宽,“xiansi_2[j].Left:= 440”可能超出其宽度。
source, control1是两个panel控件的名字,应该没有问题,可以把你运行正常的代码帖出来吗?
source.Font.Name
control1.Color
control1.Font.Color
control1.Width