2011-12-21 10 views

Respuesta

10

¿Quieres decir así?

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Form: TForm; 
    Lbl: TLabel; 
    Btn: TButton; 
begin 

    Form := TForm.Create(nil); 
    try 
    Form.BorderStyle := bsDialog; 
    Form.Caption := 'My Dynamic Form!'; 
    Form.Position := poScreenCenter; 
    Form.ClientWidth := 400; 
    Form.ClientHeight := 200; 
    Lbl := TLabel.Create(Form); 
    Lbl.Parent := Form; 
    Lbl.Caption := 'Hello World!'; 
    Lbl.Top := 10; 
    Lbl.Left := 10; 
    Lbl.Font.Size := 24; 
    Btn := TButton.Create(Form); 
    Btn.Parent := Form; 
    Btn.Caption := 'Close'; 
    Btn.ModalResult := mrClose; 
    Btn.Left := Form.ClientWidth - Btn.Width - 16; 
    Btn.Top := Form.ClientHeight - Btn.Height - 16; 
    Form.ShowModal; 
    finally 
    Form.Free; 
    end; 

end; 
+1

Ah, pensé que para la creación dinámica de los formularios necesito esos archivos, no me lo creo tan fácil (la próxima vez lo intentaré antes de preguntar). Gracias –

+4

@Martin el análisis de archivos .dfm convierte el archivo .dfm en asignaciones de propiedades al igual que el código en la excelente respuesta de Andreas. –

+2

+1 Buena respuesta. En una nota lateral, no tiene que usar variables para cada control agregado al formulario. Podría, por ejemplo, usar 'con TLabel.Create (Form) do' para agregar una etiqueta y modificar sus propiedades. Delphi le asignará un nombre único y puede cambiarlo si lo desea. –

3

Sí, es posible:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    Form: TForm; 

begin 
    Form:= TForm.Create(Self); 
    try 
    Form.ShowModal; 
    finally 
    Form.Free; 
    end; 
end; 
Cuestiones relacionadas