2011-12-21 16 views
6

क्या इसके लिए स्रोत फाइलों के बिना TForm बनाना और दिखाना संभव है? मैं रनटाइम पर अपने फॉर्म बनाना चाहता हूं और खाली * .dfm और * .pas फाइलें मुझे बेकार लगती हैं।* .dfm और * .pas फ़ाइलों के बिना गतिशील रूप से फ़ॉर्म बनाना संभव है?

धन्यवाद

उत्तर

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

@ मार्टिन .dfm फ़ाइल पार्सिंग .dfm फ़ाइल को एंड्रैस के उत्कृष्ट उत्तर में कोड की तरह संपत्ति असाइनमेंट में परिवर्तित करता है। –

+2

+1 अच्छा जवाब। एक तरफ ध्यान दें, आपको फॉर्म में जोड़े गए प्रत्येक नियंत्रण के लिए चर का उपयोग करने की आवश्यकता नहीं है। उदाहरण के लिए, आप लेबल जोड़ने और इसके गुणों को संशोधित करने के लिए 'TLabel.Create (फॉर्म) do' के साथ' का उपयोग कर सकते हैं। डेल्फी इसे एक अनूठा नाम सौंपेगा और यदि आप चाहें तो इसे बदल सकते हैं। –

3

हाँ, यह संभव है:

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

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