我把100个label放在panel里面.再调用panel.controls[i].用循环语句for i:=0 to 99对它们的颜色进行设定,要求当点任意其中一个label时该label变成红色(其他99为黑色).该如何实现? 请说的详细点,多谢.

解决方案 »

  1.   

    每个Label的Click事件都可以这么写:
    for i := 0 to panel.controlcount - 1 do
      if panel.controls[i] is TLabel then
        TLabel(panel.controls[i]).Color := clBlack;
    (Sender as TLabel).Color := clRed;
      

  2.   

    var
      i:integer;
    begin
      for i:=0 to panel1.ComponentCount-1 do
        if panel1.Components[i] is TLabel then
          TLabel(panel1.Components[i]).Color:=clblack;
      if Sender is TLabel then TLabel(Sender).Color:=clRed;
    end;
      

  3.   

    onClick -> TLabl(Sender).Name;
    FindComponent(TLabl(Sender).Name).color := clred;
      

  4.   

    不要全部设置,这样不仅效率低,而且闪烁!for i :=0 to panel.controlscount-1 do begin 
        if panel.controls[i] as Tlable.color <>clblack then 
           panel.controls[i] as Tlable.color:=clblack; 
    end;sender as Tlable..color:=clred;