var
  TabSheet: TTabSheet;
  i: Integer;
begin
  with adoQuery1 do
  begin
    for i := 0 to RecordCount - 1 do
    begin
      TabSheet := TTabSheet.Create(self);
      TabSheet.PageControl := PageControl1;
      TabSheet.Name := 'TabSheet' + FieldByName('id').AsString;
      TabSheet.Tag := FieldByName('id').AsInteger;
      TabSheet.Caption := FieldByName('lb').AsString;
      TabSheet.Show;
    end;
  end;
end;这里为什么只创建成了第一个 TabSheet.Name := 'TabSheet' + FieldByName('id').AsString;,创建第二个就出错了,因为和第一个name相同
没有循环

解决方案 »

  1.   

    var
      TabSheet: TTabSheet;
      i: Integer;
    begin
      with adoQuery1 do
      begin
        for i := 0 to RecordCount - 1 do
        begin
          TabSheet := TTabSheet.Create(self);
          TabSheet.PageControl := PageControl1;
          TabSheet.Name := 'TabSheet' + FieldByName('id').AsString;
          TabSheet.Tag := FieldByName('id').AsInteger;
          TabSheet.Caption := FieldByName('lb').AsString;
          TabSheet.Show;
          next;
        end;
      end;
    end;