比如有10个label,我想用一个循环语句对其赋值,该怎么做?

解决方案 »

  1.   

    var
      Mylbl : array[10] of Tlabel;
      i:integer;
    begin
      for i:=0 to 9 do
      begin
        Mylbl:=Tlabel.Create(Form1);
        Mylbl.Parent:=Form1;
        Mylbl.Left:=10;
        Mylbl.Top:=10*i;
        Mylbl.OnClick:=MyOnClick;//让控件响应自己的事件
        Mylbl.Show;
      end;
    参看http://expert.csdn.net/Expert/topic/1400/1400431.xml?temp=.1822168
      

  2.   

    有一个方法很好用的,就是设置控件的Tag值1.在创建控件的时候设置好Tag值,例如:0,1,2,3,4,5,.......n
    2.在使用的时候根据Tag的值将其取出使用。如下:
    ////////////////////////////////////////////
    // 根据 Tag 获得动态控件(panMain)
    // 当Tag为数字时表示用 Tag 否则为控件名
    ////////////////////////////////////////////
    function GetDynamicControl(Tag:Variant):TControl;
    var
        i:integer;
        iTag:Integer;
        iType:integer;
    begin
        result:=nil;
        // ShowMessage(IntToStr(VarType(Tag)));
        iType:=VarType(Tag);
        if (iType=varInteger) or (iType=varByte) or (iType=varWord) then
        begin
            iTag:=Tag;
            for i:=0 to panMain.ComponentCount-1 do
            begin
                if panMain.Components[i].Tag=iTag then
                begin
                    Result:=TControl(panMain.Components[i]);
                    break;
                end;
            end;
        end
        else
        Begin
            for i:=0 to panMain.ComponentCount-1 do
            begin
                if panMain.Components[i].Name=Tag then
                begin
                    Result:=TControl(panMain.Components[i]);
                    break;
                end;
            end;
        End;
    end;panMain 是一个TPanel,当然也可以是Self了。