Form上面有6个checkbox控件,每个控件的操作都差不多,我想用控件数组来简化代码,声明了一个控件数组chks:array[1..6] of TCheckbox,现在想把Form上的6个checkbox控件对应到chks里面,也就是chks[1]对应checkbox1..chks[6]对应checkbox6,如果一个一个的写是可以实现的
chks[1]:=checkbox1;
chks[2]:=checkbox2;
chks[3]:=checkbox3;
chks[4]:=checkbox4;
chks[5]:=checkbox5;
chks[6]:=checkbox6;
如果Form里面有几十个checkbox控件,这样一个一个写就不可以取了,有什么好的办法让它们一一对应呢?谢谢!

解决方案 »

  1.   


    var i: Integer;
        s: string;   for i:=AControl.ControlCount - 1 downto 0 do
         if AControl.Controls[i] is TCheckBox then
         begin
           s := AControl.Controls[i].Name;
           delete(s, 1, Length('checkbox')); 
           chks[StrToInt(s)] := TCheckBox(AControl.Controls[i]);
         end;
      

  2.   

    http://topic.csdn.net/t/20040615/13/3093681.html
      

  3.   

    给窗体上的checkbox设置tag值,tag值为对应的控件数组的索引值
      for I := 0 to self.ControlCount - 1 do
      begin
        if Self.Controls[i].ClassName = 'TCheckBox' then
        begin
          chks[TCheckBox(self.Controls[i]).Tag] :=  TCheckBox(Self.Controls[i]);
        end;
      end;