2012-10-10 13 views
6

एक TForm पर संरेखण सेट करना संभव है, एक फॉर्म को अलटॉप पर सेट करें और दूसरा क्लाइंट को अलक्लिएंट करें - जिससे दोनों रूप स्पष्ट रूप से पूरे स्क्रीन क्षेत्र को ले लेते हैं। क्या यह एक आवेदन में करने के लिए एक समझदार बात है?TForm पर संरेखण और एंकर गुणों का उपयोग क्या है?

मुझे यह भी पता है कि एंकरों को फॉर्म पर उजागर किया गया है - लेकिन मुझे नहीं लगता कि वे क्या उपयोगी होंगे (रिज़ॉल्यूशन में परिवर्तन? एमडीआई ऐप्स?) कोई विचार?

संपादित करें: मैंने चीजों को स्पष्ट करने के लिए video about this post बनाया है।

+4

आप डेस्कटॉप के किनारे पर एक टास्कबार की नकल कर सकते हैं, 'align' को सेट करके, 'alTop' –

उत्तर

15

आप अपने Parent संपत्ति स्थापना करके एक TForm एक साधारण नियंत्रण की तरह उपयोग कर सकते हैं:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    frmEmbed:= TForm.Create(Self); 
    frmEmbed.Parent:= Self; 
    frmEmbed.Width:= 50; 
    frmEmbed.Height:= 50; 
    frmEmbed.Align:= alRight; 
    frmEmbed.Anchors:= [akLeft, akBottom]; 
    frmEmbed.Visible:= True; 
end; 

आप कैसे को देखने के लिए Anchors संपत्ति काम करता है frmEmbed.Align:= alRight; लाइन टिप्पणी करना चाहिए।


आप रुचि रखते हैं, जहां ऊपर प्रयोग किया जाता है: एक शीर्षक पट्टी के बिना parented रूप TFrame के लिए एक विकल्प है, फ्रेम डेल्फी संस्करणों के साथ उपलब्ध नहीं थे, इसलिए इसके बजाय अभिभावक रूपों का उपयोग किया गया था। आप उन्हें विरासत कोड में पा सकते हैं।

+0

मैं अभी भी वर्तमान कोड में एम्बेडेड फॉर्म का उपयोग कर सकता हूं। क्या कोई कारण है कि पुन: parenting रूप विरासत कोड तक सीमित होना चाहिए? मुझे फ्रेम के बजाय जटिल रूपों (आमतौर पर अलग-अलग टैब शीट) को कई रूपों में विभाजित करना आसान लगता है। यह मुझे अपने तर्क विभाजित रखने में मदद करता है और मेरे किसी भी रूप में नियंत्रण की संख्या को सीमित करता है। आम तौर पर मैंने अभिभावक को टैब शीट पर सेट किया है और संरेखण सेट किया है: = alClient। –

3

आप किसी अन्य फॉर्म के अंदर एक फॉर्म डाल सकते हैं। डुनो हालांकि कितना अच्छा काम करेगा। डेल्फी में 1 बार घटना को रूट करने के लिए विशेष तृतीय-पक्ष नियंत्रण थे। मॉडेल संवाद को छोड़कर, आज बॉक्स में से कम या ज्यादा काम लगता है। इस तरह प्रयास करें:

procedure TMainForm.Button1Click(...); 
begin 
    with TForm.Create(Self) do begin 
     Caption := 'Internal one'; 
     Parent := Self; 
     Visible := True; 
    end;  
end;  

शायद इस सेटअप में एंकर और संरेखण का अर्थ होगा। बाद में ऐसा लगता है कि नया "एक-विंडो" आईडीई लेआउट लागू किया गया है।

1

आप किसी अन्य कंटेनर घटक के अंदर एक फॉर्म डाल सकते हैं।

यह डॉकिंग के लिए उपयोगी है, f.i. आप पेज नियंत्रण टैब, या वास्तव में कहीं भी रूपों में डॉक कर सकते हैं।

यह TFrame के विकल्प के रूप में भी उपयोगी है: यदि आप एक फ्रेम को TFrame के बजाय TForm के रूप में डिज़ाइन करते हैं, तो यह डिज़ाइन-टाइम पर एम्बेड नहीं किया जा सकता है, और इस प्रकार डिज़ाइन द्वारा संपादित/छेड़छाड़ नहीं किया जा सकता है- समय संपादक

एंबेडेड टीएफआरम्स में उनके गुण या घटनाएं उस रूप में फिर से परिभाषित हो सकती हैं जहां वे एम्बेडेड हैं, और यह हमेशा वांछनीय या व्यावहारिक नहीं है, खासकर जब आप फ्रेम आसानी से अपग्रेड करने योग्य या प्रतिक्रियाशील होना चाहते हैं। बदली गई फ्रेम गुण डीएफएम में समाप्त होते हैं, पीएएस नहीं, और इसलिए संकलन-समय पर नहीं देखा जाता है, और रिफैक्टर/नाम बदलने/आदि के लिए आसान नहीं होते हैं।

2

एक साधारण मामला कैप्शनलेस फॉर्म (जैसे जीत -8 मेट्रोपोलिस शैली) के लिए है, आप ऊपरी दाएं कोने में बाहर निकलने वाले बटन को एंकर कर सकते हैं।

लेकिन सबसे अच्छा उपयोग आकार परिवर्तनों के लिए एक जटिल रूप को उत्तरदायी बनाने के लिए सरल बनाना है ... एकेलेफ्ट और अक्वाइट का उपयोग करके, आप एक क्षैतिज नियंत्रण क्षैतिज स्थान भर सकते हैं। सभी 4 एंकरों का उपयोग क्लाइंट को अन्य क्लाइंट के साथ घूमने की आवश्यकता के बिना, क्लाइंट को अटैचमेंट करने के समान है।

एंकरों के साथ आप जो भी कर सकते हैं, वह कई पैनलों के साथ भी किया जा सकता है, लेकिन जैसे ही फॉर्म अधिक जटिल हो जाता है, कभी-कभी पैनलों पर पैनलों के कई स्तरों की आवश्यकता होती है।

बेशक पैनलों और एंकरों के संयोजन का उपयोग करना सबसे अच्छा जवाब होगा।

+0

मुझे लगता है कि आपने कुछ हद तक सवाल गलत समझा होगा। मैं वास्तव में टीएफओआर कक्षा पर एंकर/संरेखण गुणों की उपयोगिता के बाद हूं, यानी फॉर्म पर स्थिति नियंत्रण के लिए इसका उपयोग करने के बजाय स्क्रीन पर फॉर्म को स्थानांतरित करने के लिए। – Alister

+0

हां- मैंने गलत समझा। –

+0

आप तब जवाब वापस लेना चाहेंगे। – Alister

संबंधित मुद्दे