for i:=0 to 10 do begin vLabel[i]:=TLabel.Create(self);//注意此行 Try vLabel[i].Name:='Label'+inttostr(13+i); vLabel[i].Parent:=Panel1; vLabel[i].Top:=100; vLabel[i].left:=100; vLabel[i].caption:='Label'+inttostr(13+i); Except vLabel[i].Free; end; Adoquery2.Next; //另外为什么你不使用Adoquery2却要移动记录呢? end;
//另外,建议你把如下语句改改for i := 0 to 10 do //------>>>>>>>>>>> for i := Low(vLable) to High(vLable) do
vLabel[i]:=TLabel.Create(self);//这样就行了
for i:=0 to 10 do begin vLabel[i].Create(Application); Try vLabel[i].Name:='Label'+inttostr(13+i); vLabel[i].Parent:=Panel1; vLabel[i].Top:=100; vLabel[i].left:=100; vLabel[i].caption:='Label'+inttostr(13+i); Except vLabel[i].Free; end; Adoquery2.Next; end;
for i := Low(vLable) to High(vLable) do 编译都过不了,说没有说明标识符vLable var vLabel:array of TLabel;我是这样说明的。
给你参考(过程序功能动态生成labe),自已改一下吧 procedure TfrmPfcl.CreateLabel(lf, tp: integer; LBCaption: string); begin with Tlabel.Create(panel1) do begin if length(lbCaption) > 8 then caption := copy(LBCaption, 1, 8) + #13 + copy(lbCaption, 9, length(lbCaption) - 8) else caption := lbCaption; left := lf; top := tp; parent := groupbox2; end; end;
var vLabel:array of TLabel;我是这样说明的。//去,动态数组不早说begin SetLength(vLabel, 11); //分配11个元素资源 //............. end;
for i:=0 to 10 do begin vLabel[i].Create(Applicaton); with vLabel[i] do Try vLabel[i].Name:='Label'+inttostr(13+i); vLabel[i].Parent:=Panel1; vLabel[i].Top:=100; vLabel[i].left:=100; vLabel[i].caption:='Label'+inttostr(13+i); Except vLabel[i].Free; end; Adoquery2.Next; end;
for i := Low(vLable) to High(vLable) do //你那是动态数组,要先SetLength()才可以;
begin
vLabel[i]:=TLabel.Create(self);//注意此行
Try
vLabel[i].Name:='Label'+inttostr(13+i);
vLabel[i].Parent:=Panel1;
vLabel[i].Top:=100;
vLabel[i].left:=100;
vLabel[i].caption:='Label'+inttostr(13+i);
Except
vLabel[i].Free;
end;
Adoquery2.Next; //另外为什么你不使用Adoquery2却要移动记录呢?
end;
这行是不要的。
vLabel[i]:=TLabel.Create(self);//注意此行此行我应该怎么做呢有什么方法?
//------>>>>>>>>>>>
for i := Low(vLable) to High(vLable) do
begin
vLabel[i].Create(Application);
Try
vLabel[i].Name:='Label'+inttostr(13+i);
vLabel[i].Parent:=Panel1;
vLabel[i].Top:=100;
vLabel[i].left:=100;
vLabel[i].caption:='Label'+inttostr(13+i);
Except
vLabel[i].Free;
end;
Adoquery2.Next;
end;
编译都过不了,说没有说明标识符vLable
var vLabel:array of TLabel;我是这样说明的。
vLabel[i]:=TLabel.Create(Self);//都还是不行还是原来的错误。
procedure TfrmPfcl.CreateLabel(lf, tp: integer; LBCaption: string);
begin
with Tlabel.Create(panel1) do
begin
if length(lbCaption) > 8 then
caption := copy(LBCaption, 1, 8) + #13 + copy(lbCaption, 9, length(lbCaption) - 8)
else caption := lbCaption;
left := lf;
top := tp;
parent := groupbox2; end;
end;
SetLength(vLabel, 11); //分配11个元素资源
//.............
end;
begin
vLabel[i].Create(Applicaton);
with vLabel[i] do
Try
vLabel[i].Name:='Label'+inttostr(13+i);
vLabel[i].Parent:=Panel1;
vLabel[i].Top:=100;
vLabel[i].left:=100;
vLabel[i].caption:='Label'+inttostr(13+i);
Except
vLabel[i].Free;
end;
Adoquery2.Next;
end;
http://www.csdn.net/expert/topic/799/799889.xml?temp=.2711603
http://www.csdn.net/expert/topic/799/799789.xml?temp=.6369135
http://www.csdn.net/expert/topic/795/795315.xml?temp=.9500238谁能解决,全部可用分相送!
zswang(伴水)
多谢你们,问题已经搞定了,可是不知道我在free它们的时候是不是有什么不对我总觉得我没有free它们。
还有就是,我怎么对它们动态的给字体,大小,颜色?
// ~~~~~这时释放工作已经交给了“Self”vLabel[i].Font.Name := '宋体';
vLabel[i].Font.Size := 20;
vLabel[i].Font.Color := clBlue;
意思就是我不用管它了吗?可是当我的combobox1中的text内容改变的时候,我想把上一次所有创建的label全部删除了,创建另一批label,我应该怎么做呢?现在我的combobox1的text内容改变时,我再调用它(我把它写成了过程),label还是第一次创建时内容,一点都没有变啊,我想是不是没有free或数组没有清空哟。