2011-12-21 25 views

回答

10

你的意思是这样的吗?

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

啊,我认为对于动态创建表单我需要这些文件,我不会相信这很容易(下次我会试着问)。谢谢 – 2011-12-21 19:55:46

+4

@Martin .dfm文件解析将.dfm文件转换为属性分配,就像Andreas出色的答案中的代码一样。 – 2011-12-21 19:57:53

+2

+1好答案。在附注中,您不必为添加到表单的每个控件使用变量。例如,您可以使用'with TLabel.Create(Form)do'来添加标签并修改其属性。 Delphi会为它分配一个唯一的名称,如果你愿意,你可以改变它。 – 2011-12-21 20:23:50

3

是的,这是可能的:

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

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