请问高手如何简化下面的程序(50分)

  • 主题发起人 主题发起人 党sir
  • 开始时间 开始时间

党sir

Unregistered / Unconfirmed
GUEST, unregistred user!
请问高手如何简化下面的程序:

VAR
i:integer;
begin
...
case i of
1: label1.color:=clred;
2: label2.color:=clred;
3: label3.color:=clred;
4: label4.color:=clred;
5: label5.color:=clred;
6: label6.color:=clred;
7: label7.color:=clred;
...
end;
end;
 
(FindComponent('label'+inttostr(i)) as tlabel).color:=clred;
 
用一下tag属性,预先设置每个label的tag属性分别是1,2,3,4,5,6,7...
for k := ComponentCount - 1 downto 0 do
begin
if (Components[k] is TLabel) and (components[k].tag=i) then
components[k].color:=clred;
end;
end;

好象没怎么简单呀?
 
如果这段程序是在所要改变颜色的TLabel的事件中调用的,
则为每个Label的tag属性赋值,如Label1,其Tag设为1,依次
类推,这样程序可简化为
(Sender as TControl).Color:=clred;

如果不是上面这样的,不过所有的Label在同一个容器内。这可以这样
for k:=0 to parnetContol.ControlCount-1 do
if (parentControl.Controls[k].ClassName='TLabel')
and(parentControl.Controls[k].Tag=i) then
parentControls[k].Color=clred;
注意,仍要给每个Label的tag赋值。

good luck
 
先判断控件是Label吗?
是的话,就让它的Color:=clRed;

 
doxpix的程序可以不考虑tag,人家就是要给label变色
 
党sir,可以把你的拿个串口通信程序给我看看吗?谢谢了
floatcloud@8848.net
 
honghs 的办法比较好
 
定义数组arrLabel:array of TLabel
 
接受答案了.
 
后退
顶部