delphi इनकम डेल्फी, संभव रूप से केवल एक विशिष्ट मापदंड बनाने के लिए फार्म बनाने के लिए?




मुर्गी फार्म प्रोजेक्ट रिपोर्ट (4)

इस पोस्ट में आपकी ज़रूरतों को पूरा करने के लिए एक अच्छी चाल है: http://blogs.teamb.com/deepakshenoy/2006/08/21/26864

सारांश को गैर-मॉड्यूलर विंडो को फिर से सक्षम करना है, जिसे आप चाहते हैं जब एक मोडल विंडो ने इसे अक्षम किया था।

मुझे एक ऐसा आवेदन मिला है जहां एक मुख्य पृष्ठभूमि का रूप है, वहां से उपयोगकर्ता केवल गैर-मोडल रूपों का उपयोग कर सकता है जो सिस्टम के अलग-अलग भाग को बनाए रखता है। गैर-मोडल प्रपत्र CreateParams विधि को ओवरराइड करते हैं, इसलिए प्रत्येक एक प्रारंभ कार्य बार में एक बटन दिखाता है:

procedure TfmMaterialsPlanning.CreateParams(var Params: TCreateParams);
begin
   inherited;
   //create a new window on the task bar when this form is created
   Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
end;

असल में, कोई उपयोगकर्ता एक गैर-मोडल फॉर्म खोल सकता है जो 'सेपल्स' को बनाए रखता है, एक और गैर-मोडल प्रपत्र जो 'संतरे' का रखरखाव करता है, और दोनों के बीच आसानी से स्विच करने के लिए प्रारंभ मेनू बार का उपयोग करें।

हालांकि, अगर वे 'सेब' फॉर्म से एक मोडल फॉर्म खोलते हैं, जैसे कि विकल्प, प्राथमिकताएं, आदि सेट करने के लिए, तब तक वे 'ऑरेंज' फ़ॉर्म का उपयोग नहीं कर सकते जब तक कि वे मोडल फॉर्म को बंद न करें।

क्या माता-पिता के फॉर्म में केवल एक मॉडल बनाने के लिए संभव है? इसलिए यदि वे ऐप्पल के विकल्प फॉर्म खोलते हैं, तो वे एपल्स रखरखाव प्रपत्र का उपयोग नहीं कर सकते हैं, लेकिन फिर भी ऑरेंज्स रखरखाव फ़ॉर्म का उपयोग कर सकते हैं?

धन्यवाद


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

यह कहने के बाद - मुझे नहीं लगता कि यह एक अच्छा विचार है। यह सभी मान्यताओं को तोड़ता है जो एक विंडोज़ प्रयोक्ता अनुप्रयोगों के व्यवहार के बारे में करता है। मैक ओएस एक्स के विपरीत, विंडोज़ में आवेदन-मोडल और फॉर्म-मोडल संवाद के बीच कोई अंतर नहीं है, और आपको अपने प्रोग्रामिंग के विरुद्ध प्लेटफॉर्म के अनुरूप व्यवहार करना चाहिए।

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


बस एक तरह के रूप में (हालांकि यह बहुत ही भयानक काम होगा), इस समस्या का एक अन्य दृष्टिकोण Google के क्रोम के रास्ते पर गया है, जहां प्रत्येक "टैब" एक अलग प्रक्रिया है लेकिन उपयोगकर्ता को एक एकीकृत एप्लिकेशन के रूप में दिखाई देता है

हालांकि इस दृष्टिकोण को आप जो चाहते थे, प्राप्त कर लेंगे, मुझे ऊपर टिप्पणी से सहमत होना होगा कि यह एक उपयोगकर्ता धारणा और मॉडल व्यवहार के बारे में अपेक्षाओं को तोड़ देगा।


फोकस को स्वीकार करने से "सेब" फार्म को रोकने के साथ ही उसके बच्चे के फॉर्म को खोलने के द्वारा आप एक ही प्रभाव को प्राप्त नहीं कर पाए हैं?