जब डिजाइनिंग रूपों में डेल्फी, यह अक्सर कोड लिखने के लिए उपयोगी होता है ताकि आपका एप्लिकेशन (प्रपत्र और सभी ऑब्जेक्ट) स्क्रीन रिज़ॉल्यूशन की परवाह किए बिना अनिवार्य रूप से समान दिखें।
पहली चीज जिसे आप फॉर्म डिजाइन चरण में जल्दी याद रखना चाहते हैं, वह यह है कि आप फॉर्म को स्केल करने की अनुमति देने जा रहे हैं या नहीं। स्केलिंग न करने का फायदा यह है कि रनटाइम में कुछ भी नहीं बदलता है। स्केलिंग न करने का नुकसान यह है रनटाइम में कुछ भी नहीं बदलता है (आपका फॉर्म कुछ सिस्टम पर पढ़ने के लिए बहुत छोटा या बहुत बड़ा हो सकता है अगर इसे छोटा नहीं किया गया है)।
यदि आप फ़ॉर्म को स्केल नहीं करने जा रहे हैं, तो सेट करें परतदार झूठा करने के लिए। अन्यथा, संपत्ति को True पर सेट करें। इसके अलावा, सेट करें स्व घूमना गलत करने के लिए: विपरीत का मतलब रनटाइम पर फॉर्म के फ्रेम आकार को बदलना नहीं होगा, जो फॉर्म की सामग्री के दौरान अच्छा नहीं लगता है कर आकार बदलें।
महत्वपूर्ण विचार
एरियल की तरह फॉर्म के फ़ॉन्ट को एक स्केलेबल ट्रू टाइप फ़ॉन्ट पर सेट करें। केवल एरियल आपको वांछित ऊंचाई के पिक्सेल के भीतर एक फ़ॉन्ट देगा। यदि किसी एप्लिकेशन में उपयोग किया जाने वाला फ़ॉन्ट नहीं है लक्ष्य कंप्यूटर पर स्थापित है, तो विंडोज का उपयोग करने के लिए उसी फ़ॉन्ट परिवार के भीतर एक वैकल्पिक फ़ॉन्ट का चयन करेगा बजाय।
फॉर्म का सेट करें स्थान कुछ के अलावा संपत्ति poDesigned, जो उस रूप को छोड़ देता है जहां आपने इसे डिज़ाइन समय पर छोड़ा था। यह आमतौर पर 1280x1024 स्क्रीन पर बाईं ओर बंद होता है और पूरी तरह से 640x480 स्क्रीन से दूर होता है।
प्रपत्र पर भीड़ नियंत्रण न करें - नियंत्रणों के बीच कम से कम 4 पिक्सेल छोड़ दें ताकि सीमा स्थानों में एक-पिक्सेल परिवर्तन (स्केलिंग के कारण) अतिव्यापी नियंत्रण के रूप में दिखाई न दें।
सिंगल लाइन लेबल के लिए जो हैं alLeft या ठीक है संरेखित करें, सेट करें ऑटो साइज़ सच करने के लिए। अन्यथा, सेट करें ऑटो साइज़ झूठा करने के लिए।
सुनिश्चित करें कि फ़ॉन्ट चौड़ाई परिवर्तन की अनुमति देने के लिए एक लेबल घटक में पर्याप्त खाली जगह है - एक खाली स्थान जो वर्तमान की लंबाई का 25% है तार प्रदर्शन की लंबाई थोड़ी बहुत है, लेकिन सुरक्षित है। यदि आप अपने ऐप को अन्य भाषाओं में अनुवाद करने की योजना बनाते हैं, तो आपको स्ट्रिंग लेबल के लिए कम से कम 30% विस्तार स्थान की आवश्यकता होगी। अगर ऑटो साइज़ गलत है, सुनिश्चित करें कि आपने वास्तव में लेबल की चौड़ाई उचित रूप से निर्धारित की है। अगर ऑटो साइज़ यह सच है, सुनिश्चित करें कि लेबल के बढ़ने के लिए पर्याप्त जगह है।
बहु-पंक्ति में, शब्द-लिपटे लेबल, निचले स्थान पर कम से कम एक पंक्ति छोड़ दें। जब पाठ चौड़ाई भिन्न रूप से स्केलिंग के साथ परिवर्तित होती है तो आपको ओवरफ़्लो को पकड़ने के लिए इसकी आवश्यकता होगी। यह मत मानिए कि क्योंकि आप बड़े फ़ॉन्ट का उपयोग कर रहे हैं, इसलिए आपको पाठ-ओवरफ़्लो की अनुमति नहीं है - किसी और के बड़े फ़ॉन्ट आपके से बड़े हो सकते हैं!
विभिन्न प्रस्तावों पर आईडीई में एक परियोजना खोलने के बारे में सावधान रहें। रूपों PixelsPerInch जैसे ही फॉर्म खोला जाता है, संपत्ति को संशोधित किया जाएगा, और यदि आप प्रोजेक्ट को बचाते हैं तो डीएफएम को बचाया जाएगा। यह स्टैंडअलोन चलाकर ऐप का परीक्षण करना और केवल एक रिज़ॉल्यूशन पर फ़ॉर्म को संपादित करना सबसे अच्छा है। अलग-अलग रिज़ॉल्यूशन और फॉन्ट साइज़ में एडिटिंग से कंपोनेंट ड्रिफ्ट और साइज़िंग प्रॉब्लम होती है। सुनिश्चित करें कि आप अपना सेट करें PixelsPerInch 120 के लिए अपने सभी रूपों के लिए। यह 96 तक चूक जाता है, जो कम रिज़ॉल्यूशन पर स्केलिंग की समस्या पैदा करता है।
कंपोनेंट ड्रिफ्ट की बात करें, तो डिज़ाइन टाइम या फॉर्म में कई बार फॉर्म को रिस्केल न करें क्रम. प्रत्येक rescaling राउंड-ऑफ त्रुटियों का परिचय देता है जो निर्देशांक सख्ती से अभिन्न हैं क्योंकि बहुत जल्दी जमा होते हैं। जैसे-जैसे भिन्नात्मक मात्राएँ नियंत्रण की उत्पत्ति और आकार में विभाजित हो जाती हैं, प्रत्येक क्रमिक पुनरुत्थान के साथ, नियंत्रण उत्तर पश्चिम में रेंगना और छोटा हो जाएगा। यदि आप अपने उपयोगकर्ताओं को किसी भी समय फ़ॉर्म को फिर से बनाने की अनुमति देना चाहते हैं, तो प्रत्येक स्केलिंग से पहले एक ताज़ा लोड किए गए / बनाए गए फ़ॉर्म से शुरू करें ताकि स्केलिंग त्रुटियां जमा न हों।
सामान्य तौर पर, किसी विशेष रिज़ॉल्यूशन पर फ़ॉर्म डिज़ाइन करना आवश्यक नहीं है, लेकिन यह महत्वपूर्ण है कि आप उनकी समीक्षा करें 640x480 में बड़े और छोटे फोंट के साथ उपस्थिति, और छोटे और बड़े फोंट के साथ उच्च रिज़ॉल्यूशन पर, रिलीज़ होने से पहले आपका ऐप। यह आपकी नियमित प्रणाली संगतता परीक्षण चेकलिस्ट का हिस्सा होना चाहिए।
अनिवार्य रूप से एकल-पंक्ति वाले किसी भी घटक पर ध्यान दें TMemos-इस तरह की चीजें TDBLookupCombo. विंडोज मल्टी-लाइन एडिट कंट्रोल हमेशा केवल टेक्स्ट की पूरी लाइनें दिखाता है - अगर नियंत्रण इसके फॉन्ट के लिए बहुत छोटा है, तो TMemo कुछ भी नहीं दिखाएगा (ए) TEdit क्लिप्ड पाठ दिखाएगा)। इस तरह के घटकों के लिए, उन्हें कुछ पिक्सेल बहुत बड़ा बनाने से बेहतर है कि एक पिक्सेल बहुत छोटा हो और कोई भी पाठ न दिखाए।
ध्यान रखें कि सभी स्केलिंग रनटाइम और डिज़ाइन समय के बीच फ़ॉन्ट ऊंचाई के अंतर के लिए आनुपातिक है, नहीं पिक्सेल रिज़ॉल्यूशन या स्क्रीन का आकार। यह भी याद रखें कि जब फॉर्म को छोटा किया जाता है तो आपके नियंत्रण की उत्पत्ति बदल जाएगी - आप बहुत अच्छी तरह से घटकों को बड़ा नहीं कर सकते हैं, उन्हें थोड़ा भी हिलाए बिना।
एंकर, एलाइनमेंट, और अड़चन: थर्ड पार्टी वीसीएल
एक बार जब आप जानते हैं कि डेल्फी को अलग-अलग स्क्रीन रिज़ॉल्यूशन पर बनाते समय किन मुद्दों को ध्यान में रखना चाहिए, तो आप कुछ के लिए तैयार हैं कोडिंग.
डेल्फी संस्करण 4 या उच्चतर के साथ काम करते समय, कई गुणों को एक रूप पर नियंत्रण के रूप और लेआउट को बनाए रखने में हमारी मदद करने के लिए डिज़ाइन किया गया है।
उपयोग संरेखित किसी प्रपत्र या पैनल के ऊपर, नीचे बाएं, या दाईं ओर एक नियंत्रण संरेखित करें और यदि नियंत्रण, परिवर्तन शामिल हैं, तो आकार, पैनल या घटक का आकार वहां भी रहता है। जब माता-पिता का आकार बदला जाता है, तो एक संरेखित नियंत्रण भी आकार बदलता है ताकि यह माता-पिता के ऊपर, नीचे, बाएं या दाएं किनारे पर फैले रहे।
उपयोग प्रतिबन्ध नियंत्रण की न्यूनतम और अधिकतम चौड़ाई और ऊंचाई निर्दिष्ट करने के लिए। जब बाधाओं में अधिकतम या न्यूनतम मूल्य होते हैं, तो उन बाधाओं का उल्लंघन करने के लिए नियंत्रण का पुन: निर्धारण नहीं किया जा सकता है।
उपयोग लंगर यह सुनिश्चित करने के लिए कि एक नियंत्रण अपने माता-पिता के एक किनारे के सापेक्ष अपनी वर्तमान स्थिति को बनाए रखता है, भले ही अभिभावक का आकार परिवर्तन हो। जब इसके अभिभावक का आकार बदल दिया जाता है, तो नियंत्रण किनारों के सापेक्ष अपनी स्थिति रखता है, जिस पर यह लंगर डाला जाता है। यदि नियंत्रण को उसके माता-पिता के विपरीत किनारों पर लंगर डाला जाता है, तो नियंत्रण तब फैलता है जब उसके माता-पिता का आकार बदल जाता है।
प्रक्रिया स्केलफॉर्म
(एफ: टीफ़ॉर्म; स्क्रीनविद, स्क्रीनहाइट: लॉन्गआईंट);
शुरू
F.Scaled: = True;
F.AutoScroll: = गलत;
F.Position: = poScreenCenter;
F.Font। नाम: = 'एरियल';
अगर (स्क्रीन चौड़ाई <> स्क्रीनविद) तब शुरू होती है
एफ हाइट: =
LongInt (F.Height) * लॉन्गआईंट (स्क्रीन)। ऊंचाई)
div स्क्रीनहाइट;
एफ। वाथ: =
LongInt (F.Width) * लॉन्गइंट (स्क्रीन)। चौड़ाई)
div ScreenWidth;
F.ScaleBy (स्क्रीन)। चौड़ाई, स्क्रीनविद);
समाप्त;
समाप्त;