A ver si este ejemplo te sirve:
Código Delphi
[-]
unit crearbotones;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TfrCrearbotones = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure cerrar(Sender:Tobject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
private
public
end;
var
frCrearbotones: TfrCrearbotones;
implementation
{$R *.DFM}
procedure TfrCrearbotones.Button1Click(Sender: TObject);
var
boton:TButton;
i:integer;
ancho:Integer;
centro:Integer;
begin
ancho:=Screen.Width;
ancho:=ancho - 100;
centro:=ancho div 2 ;
for i:=0 to 17 do
begin
boton:=TButton.Create(frCrearbotones);
boton.name:='boton'+intToStr(i);
boton.Parent:=frCrearBotones;
boton.SetBounds(1+i*8,1+i*22,100,20);
boton.Caption:='Mi botón'+intToStr(i);
boton.OnClick :=cerrar;
boton:=TButton.Create(frCrearBotones);
boton.name:='boton'+intToStr(i+36);
boton.Parent:=frCrearBotones;
boton.SetBounds(centro,1+i*22,100,20);
boton.Caption:='Mi botón'+intToStr(i+36);
boton.OnClick :=cerrar;
boton:=TButton.Create(frCrearBotones);
boton.name:='boton'+intToStr(i+18);
boton.Parent:=frCrearBotones;
boton.SetBounds(ancho-i*8,1+i*22,100,20);
boton.Caption:='Mi botón'+intToStr(i+18);
boton.OnClick :=cerrar;
end;
button1.caption:='Cerrar';
button1.onclick:=Cerrar;
end;
procedure TfrCrearbotones.cerrar(Sender:Tobject);
begin
close;
end;
procedure TfrCrearbotones.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action:=CaFree;
end;
Un Saludo.