循环付值(50分)

  • 主题发起人 主题发起人 xuefeiyang
  • 开始时间 开始时间
X

xuefeiyang

Unregistered / Unconfirmed
GUEST, unregistred user!
比如有100个label通过数组付值
但是一个个付值很麻烦,请问如何能通过一个循环付值
 
for i=0 to ComponentCount-1 do
if Components is TLabel then
TLabel(Components).Caption:='';
 
谢谢 ysai
不过因为我对Component还不太懂,所以做出来不太理想。希望您能给说的详细点
 
for i=0 to self.ComponentCount -1 do
if Self.Components is TLabel then
TLabel(Components).Caption:='';
 
可以使用ControlCount跟Controls好一些
也可以使用FindComponent
 
楼上两位说的不错,但是只能把你窗体上所有的Label全赋值了!
如果有选择性就不行了!
下面这个是笨办法!不错!
//---------------------
Var
MyLabel : Array of TLabel;
Begin
SetLength(MyLabel,你有几个Label要赋同样的值);
//这一段你总是要写的
MyLabel[0] := Label0;
MyLabel[1] := Label1;
MyLabel[2] := Label2;
......
MyLabel[n-1] := Labelx;
//写完了,这下可以用了

for I := 0 to N - 1 do
Begin
MyLabel.Caption := 'XXX';
end;
end;
 
不同意Sandao:
将所有要赋值的Label 放在Pannel1 上。
for i=0 to Pannel1.ComponentCount -1 do
if Pannel1.Components is TLabel then
(Components as TLabel).Caption:='';


 
>>chengjian
如果他不能把所有要赋同一值的Label放到一个Pannel上呢!
或者一个Pannel上他还有其它不能赋这个值的Label呢?怎么办,诚心请教!
 
简单呀, 通过name区分嘛
for i := 0 to componentcount-1 do
if (components is TLabel) and (strlicomp(pchar(components.name), 'MYLABEL', 7)=0) then
tlabel(components).caption := inttostr(i);
 
好是好,不过用Name区分总不是个好办法!以后万一不小心名字改了就麻烦了!
 
呵呵, 那就没办法啦, 不小心的情况多了, 不管你说出哪种方法来, 我都可以找出一种不小心的情况来否定你的。
 
TO pearl
您能不能把(strlicomp(pchar(components.name), 'MYLABEL', 7)=0)给我解释一下
我不太懂啊
 
function StrLIComp(const Str1, Str2: PChar; MaxLen: Cardinal): Integer;
比较字符串,不区分大小写!MaxLen是指比较前几位!
Str1<Str2 返回值 < 0
Str1=Str2 返回值 = 0
Str1>Str2 返回值 > 0
 
谢谢,我先回去式式,回头就给分
另外,应该是能通过循环给不同的label付值吧
 
>>谢谢,我先回去式式,回头就给分
不客气,这里都是好兄弟!(看看大家多热情)
>>另外,应该是能通过循环给不同的label付值吧
@?@
 
再来
for i=0 to ComponentCount-1 do
if Components is TLabel then
case TLable(Components).Tag of
1:TLabel(Components).Caption:='1';
2:TLabel(Components).Caption:='2';
end;
在设计期或运行期给Tag赋值
 
何必呢,既然是 100 个Label,应该命名是有规律的把,比如:Label1~Label100
那这样不就准确了:

for i := 1 to 100 do
TLabel(FindComponent('Label' + IntToStr(i))).Caption := IntToStr(i);
 
多人接受答案了。
 
for i=0 to Pannel1.ComponentCount -1 do
if Pannel1.Components is TQRLabel then
(Components as TQRLabel).Caption:='';

为什么不行? TQRLabel 没这个东西?
 
后退
顶部