怎样随机选取label(50分)

  • 主题发起人 主题发起人 zylsoft
  • 开始时间 开始时间
Z

zylsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
form上有50个label,怎样随机选取label ?
----------
本想:
(i:integer)
i:=random(50);
labeli !!可惜不行,求救!!!
 
ShowMessage(findComponrnt('Label'+IntToStr(random(50))).Caption);
 
var
C:TComponent;
begin
Randomize;
C:=FindComponent('Label'+IntToStr(Random(50)));
if (C<>nil) and (C is TLabel) then
ShowMessage('Found!')
else
ShowMessage('Not Found!');
end;
 
ShowMessage(TLabel(FindComponent('Label'+IntToStr(random(50)+1))).Caption);
测试了,
 
多谢
还有一点
就是怎样让随机选的label字体变大1倍然后再变恢复原样啊!!!!
 
可以读写的
i:=TLabel(FindComponent('Label'+IntToStr(random(50)+1))).Font.Size;
大一倍
TLabel(FindComponent('Label'+IntToStr(random(50)+1))).Font.Size:=2*i;
原来大小
TLabel(FindComponent('Label'+IntToStr(random(50)+1))).Font.Size:=i;

 
是这样的
我想不停的选取随机label,让label的size大一倍,后在恢复原来

如果
TLabel(FindComponent('Label'+IntToStr(random(50)+1))).Font.Size:=2*i;

 
是这样的
我想不停的选取随机label,让label的size大一倍,后在恢复原来

如果
TLabel(FindComponent('Label'+IntToStr(random(50)+1))).Font.Size:=2*i;

TLabel(FindComponent('Label'+IntToStr(random(50)+1))).Font.Size:=i;

并非是同一个label

 
那你在FormShow中先把Label字体的大小保存起来,就行了
选取时×2。不选时恢复。
 
你用什么不停的选取随机label?说说看,再给你解决
 
用time控件

随机选取label,让lable字体变大,再恢复原样,
再选label,让lable字体变大,再恢复原样......
 
这样
var
LableID, FontSize:integer;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if LableID<>0 then
TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Size:=FontSize;
LableID:=Random(50)+1;
FontSize:=TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Size;
TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Size:=2*FontSize;
end;
 
sv:integer;

sv:=Random(50);
TLabel('Label'+inttostr(sv)).Font.Size:=TLabel('Label'+inttostr(sv)).Font.Size*2;

怎么执行不通啊??
 
sv 可能为0 没有Label0
改为sv:=Random(50)+1;
你的代码错的!!!!!
上面不是给你例子了嘛
 
还是不行啊
 
不会的,我测试过的!
1。放50个Label和定时器在窗体上
2。设置变量(在private) LableID, FontSize:integer;
3。FormShow的时候初试化变量 LableID:=0;
4.定时器的事件过程。
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if LableID<>0 then
TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Size:=FontSize;
LableID:=Random(50)+1;
FontSize:=TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Size;
TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Size:=2*FontSize;
end;

再有问题,你把你所有的代码贴上来。
 
看我对颜色的做法:
var LableID:integer;
begin
if (LableID>0) and (LableID<10) then
begin
TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Color:=clNone;
end;
LableID:=Random(10)+1;
TLabel(FindComponent('Label'+IntToStr(LableID))).Font.Color:=clred;
end;

不行.我showmessage(LableID)居然是一个8位数字,造成随后都变成了红色.
怎么办啊?
 
你的LableID定义的是过程变量,要保持LableID的值至少要定义成类的private变量
 
[:(] 老兄,努力呀
 
ok
多谢 yostgxf,
 
后退
顶部