var
  buttons: array [0..3] of tbutton;
  i: integer;
begin
  query1.first;
  For i:= 0 to 3 do 
  begin
     Buttons[i]:=TButton.create(self);
     Buttons[i].Parent:=Self;
     Buttons[i].name:=query1.fieldbyname('name').asstring;
     query1.next;
  end;
end;

解决方案 »

  1.   

    var
      buttons: array [0..3] of tbutton;
      i: integer;
    begin
      query1.first;
      For i:= 0 to 3 do 
      begin
         Buttons[i]:=TButton.create(self);
         Buttons[i].Parent:=Self;
         Buttons[i].name:=query1.fieldbyname('name').asstring;
         Buttons[i].caption:=query1.fieldbyname('name').asstring;
         query1.next;
      end;
    end;
      

  2.   

    var
      buttons: array [0..3] of tbutton;
      i: integer;
    begin
      query1.first;
      i := 0;
      while not query1.Eof do
      begin
         Buttons[i]:=TButton.create(self);
         Buttons[i].Parent:=Panel1;
         Buttons[i].Left := ;
         Buttons[i].Top := ;
         Buttons[i].name:=query1.fieldbyname('name').asstring;
         i := i + 1;
         query1.next;
      end;
    end;
      

  3.   

    更正:
    把  Buttons[i].name:=query1.fieldbyname('name').asstring;
    改为:Buttons[i].Caption:=query1.fieldbyname('name').asstring;
      

  4.   

    这样到是没有问题,不过button的位置没有给出啊,照这样下来会重叠的。
    while not Query1.eof do begin
      .....
      buttons[i].left := Self.Left + 20*i;
      .....
    end;
    自己控制位置好了,还有top,就不写了。
      

  5.   

    var
      buttons: array [0..3] of tbutton;
      i: integer;
    begin
      query1.first;
      For i:= 0 to 3 do 
      begin
         Buttons[i]:=TButton.create(self);
         Buttons[i].Parent:=Self;
         Buttons[i].Left:=i+10;
         Buttons[i].Top:=i*30+10;
         Buttons[i].Caption:=query1.fieldbyname('name').asstring;
         query1.next;
      end;
    end;