var i,j:integer;
begin
    j:=1;
    for i:=1 to 40 do
    begin
      if checkbox+inttostr(i).Checked then
      begin
        prin.+'tex'+inttostr(j).DataField:='gz'+inttostr(i);
        prin.+'lab'+inttostr(j).Caption:=checkbox+inttostr(i).Caption;
        j:=j+1;
      end;
    end;
end;

解决方案 »

  1.   

    用控件数组,比如
    e:array[0..10] of tbutton;
    begin
    for i:=0 to 10 do
    begin
    e[i]:= tbutton.create(nil);
      

  2.   

    我想你可能需要的是这个:控件名称的组合
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i  :integer;
    begin
      i:=1;
      showmessage((FindComponent('edit'+inttostr(i)) as TEdit).text);
    end;
      

  3.   

    楼主看看我得代码,希望能改成你需要的var
      i,j : Integer;
    begin
      j := 1;
      for i := 1 to 2 do
      begin
        if ((FindComponent('CheckBox'+IntToStr(i)) as TCheckBox)).Checked then
        begin
          ((FindComponent('Edit'+IntToStr(i)) as TEdit)).Text := '序号'+IntToStr(i);
          j := j+1;
        end;
      end;
    end;
      

  4.   

    我的checkbox不能动态创建的。上面各位说的都不太对啊。
      

  5.   

    用数组吧
    Var 
      TmpChk:array[0..100] of TCheckBox;
      TmpTxt:array[0..100] of TEdit;
      TmpLbl:array[0..100] of TLabel;if TmpChk[i].Checked then
          begin
            with prin do
            begin
              TmpTxt[j].DataField:='gz'+inttostr(i);
              TmpLbl[j].Caption:=TmpChk[i].Caption;        
            end;
            j:=j+1;
          end;
      

  6.   

    我想你可能需要的是这个:控件名称的组合
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i  :integer;
    begin
      i:=1;
      showmessage((FindComponent('edit'+inttostr(i)) as TEdit).text);
    end;
    ---------------------------------------------------------------------
    没有说要动态创建啊
    你的错在:不是简单的字符串相加就可以当着控件名称,要用FindComponent函数