2011-12-21 5 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

아, 나는 그 파일을 필요로하는 형태의 동적 만들기위한, 나는 그것이 너무 쉽게 (내가 전에 시도 묻습니다 다음) 믿지 않을 것이라고 생각했다. 감사합니다. –

+4

@Martin .dfm 파일 구문 분석은 .dfm 파일을 Andreas의 훌륭한 대답과 같은 속성 할당으로 변환합니다. –

+2

+1 좋은 답변입니다. 참고로 폼에 추가 된 컨트롤마다 변수를 사용할 필요가 없습니다. 예를 들어 레이블을 추가하고 속성을 수정하려면 TLabel.Create (Form) do와 함께 사용할 수 있습니다. 델파이는 고유 한 이름을 지정하고 원하는 경우 변경할 수 있습니다. –

3

예, 그것은 가능하다 주셔서 감사합니다 :

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

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