2013-02-14 17 views
5

डेल्फी प्रलेखन में TCustomForm.FormStyle बारे में एक नोट है कि राज्यों जोड़ा जाता है: "यह कार्यावधि में FormStyle बदलने के लिए उचित नहीं है।"रनटाइम पर फॉर्मस्टाइल को बदलने की सलाह क्यों नहीं दी जाती है?

मुझे पता है क्यों यह सलाह दी जाती रनटाइम पर formstyle बदलने के लिए नहीं है चाहते हैं। क्या यह उपयोगकर्ता इंटरफ़ेस बिंदु दृश्य से सलाह नहीं दी जाती है या क्या कुछ तकनीकी समस्याएं हो सकती हैं? और रनटाइम पर फॉर्मस्टाइल बदलने के बाद किस तरह के मुद्दे हो सकते हैं?

मामले उपयोग

हम अपने एमडीआई आवेदन की बहु मॉनीटर समर्थन में सुधार करना चाहते हैं। वर्तमान में सभी बाल खिड़कियां मुख्य विंडो (एमडीआई अभिभावक खिड़की) के भीतर खोली गई हैं। उपयोगकर्ता क्या चाहते हैं कि मुख्य विंडो के बाहर एक बच्चे की खिड़की को खोलने/स्थानांतरित करने में सक्षम होना चाहिए ताकि बच्चे की खिड़की अलग-अलग फ्लोटिंग विंडो के रूप में खोली जा सके जो विंडोज डेस्कटॉप पर कहीं भी स्थित हो।

मैं एडोब फोटोशॉप, गूगल क्रोम और माइक्रोसॉफ्ट इंटरनेट एक्सप्लोरर में इस कार्यक्षमता का उदाहरण देखा है। (टैब्स tabbar से ले जाया जा सकता है और इसमें अलग चल विंडो में खोला जाएगा)

उत्तर

8

fsNormal से fsMDIform या fsMDIChild को कार्यावधि में FormStyle बदलने फिर से बनाने खिड़की संभाल की आवश्यकता है, और सभी खिड़की के पुन: निर्माण अपने फार्म पर सभी नियंत्रणों के लिए संभालती है की आवश्यकता है कि बदले में। जब ऐसा होता है तो डेल्फी के नियंत्रण से बाहर बहुत सारी चीजें होती हैं: हो सकता है कि आप कुछ तृतीय पक्ष नियंत्रण का उपयोग कर रहे हों जो कुछ विंडोज नियंत्रण पर निर्भर करता है फिर भी तीसरे पक्ष के नियंत्रण को यह नहीं पता कि यह कैसे राज्य को बचाया जाए। खिड़की हैंडल फिर से बनाया गया है जब उपयोगकर्ता सभी काम खो देंगे। का उपयोग कर एमडीआई, अपने सभी खिड़कियों "फ्लोट" किसी और तरीके से बनाने के लिए और उन लोगों के साथ निपटने के

  • बंद करो:

    सौभाग्य से आप समस्या को हल करने कर सकते हैं। कुछ समय के लिए एमडीआई फैशन से बाहर है।

  • बस, यह करने के नियंत्रण आपके पास के प्रकार पर निर्भर करता है, यह ठीक काम कर सकते हैं। यदि ऐसा नहीं होता है, तो देखें कि क्या गलत हुआ और इसके आसपास काम करता है (उदाहरण: आपको कुछ नियंत्रण की स्थिति को स्वयं सहेजने और स्वैप के बाद इसे पुनर्स्थापित करने की आवश्यकता हो सकती है)
  • सब कुछ फ्रेम पर डालने का प्रयास करें; जब उपयोगकर्ता स्थानांतरित करना चाहता है, तो एक नया खाली गैर-एमडीआई/एमडीआई फॉर्म बनाएं, फ्रेम को फिर से पैरेंट करें, पुराने फॉर्म को नष्ट करें।
+0

+1 अंतिम विकल्प शायद मौजूदा कोड बेस के लिए उपलब्ध सबसे आसान संक्रमण है। –

6

क्योंकि एक रूप शैली परिवर्तन खिड़की संभाल फिर से निर्माण के लिए नेतृत्व करेंगे यह सबसे अधिक संभावना। और यह सभी बच्चों की खिड़कियों के हैंडल के पुन: निर्माण को मजबूर करेगा।

विंडो फिर से निर्माण द्वारा और बड़े कुछ है कि आप देख के बिना हो सकता है है। लेकिन ऐसे नियंत्रण हैं जिनमें पुन: निर्माण के साथ समस्याएं हैं। उदाहरण के लिए, मैंने अतीत में टूलबार नियंत्रण के साथ इसका सामना किया है। डेल्फी के हाल के संस्करण पुन: निर्माण के लिए अधिक लचीला हैं।

+0

यह मेरा विचार भी था। मुझे नियंत्रण के पुराने हैंडल पर पोस्ट किए गए संदेशों के साथ समस्याएं आई हैं जिन्हें अभी तक नियंत्रित नहीं किया गया है (कोई इरादा नहीं है) छोड़ दिया जा रहा है, यह भी ध्यान देने योग्य है। – hvd

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

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