मेरे पास एक डेल्फी 2006 ऐप है जो त्रुटि स्थिति के जवाब में एक मोडल संवाद पॉप अप कर सकता है। ऐसा लगता है कि यह खुद को ऐसे राज्य में ले जाता है जहां इन मोडल संवादों में से एक खुला है, जो मुख्य रूप के सामने स्थित है, लेकिन न तो फॉर्म संदेश का जवाब दे रहा है। या तो क्लिक करने से "बोनक" मिलता है। ऐप ठीक चल रहा है, यूआई मुख्य रूप अपडेट कर रहा है, लेकिन आप कुछ भी नहीं कर सकते हैं। मुझे लगता है कि मुख्य रूप में एक और मोडल संवाद संभवतः है। चाहे यह मेरा है या विंडोज़ में से एक है, मुझे कोई जानकारी नहीं है।डेल्फी - मैं कैसे पता लगा सकता हूं कि कौन से मोडल संवाद ने ध्यान केंद्रित किया है और इसे सामने लाया है?
अन्य अंक:
- एप्लिकेशन ठीक कीबोर्ड शॉर्टकट प्रतिक्रिया करता है। इन शॉर्टकट्स में से एक ने ऐप को शानदार तरीके से बंद कर दिया और यह काम किया। मैं तब से स्थिति को पुन: पेश करने में असमर्थ रहा हूं।
- ऐप में एक ट्रे आइकन है। यह सही माउस क्लिक का जवाब देता है। यदि मैं यहां से ऐप को छोटा करता हूं तो मुख्य रूप कम से कम फोकस किए बिना मोडल डायलॉग को कम करता है और छोड़ देता है। अगर मैं मुख्य रूप को पुनर्स्थापित करता हूं, तो चीजें होती हैं जैसे कि खिड़की पर ध्यान केंद्रित नहीं किया जाता है। Alt-Tab के समान परिणाम हैं।
- मंच विंडोज 7
- है मैं DisableProcessWindowsGhosting फोन से पहले किसी भी रूपों बनाई गई हैं
मैं
ModalDialog.PopupParent := MainForm ; ModalDialog.ShowModal ;
साथ मोडल संवाद खोल मैं इन त्रुटि संवाद को स्थगित करता है, तो अन्य मोडल संवाद खुले हैं:
if (Application.ModalLevel = 0) then {open modal dialog}
मेरी क्वा एस्टियन के दो भाग हैं:
क्या प्रोग्राम की खोज करने का कोई तरीका है कि कौन सी विंडो फोकस कर रही है? इसके बाद मैं इस परिदृश्य या आखिरी उपाय के लिए कुछ कार्रवाई कर सकता था, मैं उन्हें सामने लाने के लिए शॉर्टकट कुंजी प्रदान कर सकता था या मॉड्यूलरसेट को एमआरकैंकल सेट करने जैसे कुछ अपवर्तक कार्रवाई (संवाद के आधार पर) ले सकता था।
यह स्थिति कैसे उत्पन्न हो सकती है? आम तौर पर जब मुझे मुख्य रूप के पीछे एक मॉडल संवाद मिलता है (मैं इसे खोलने के लिए मोडल संवाद प्राप्त करके, ट्रे आइकन से ऐप को कम करके, फिर ऐप को पुन: स्थापित कर सकता हूं - ऐप मुख्य फ़ॉर्म संवाद के सामने पुनर्स्थापित करता है संवाद अभी भी ध्यान केंद्रित कर रहा है), मैं ट्रे आइकन पर क्लिक करके इसे फिर से सामने ला सकता हूं, या Esc
कुंजी के साथ बंद कर सकता हूं लेकिन यह इस मामले में काम नहीं करता है।
** अद्यतन * *
Misha के ठीक TSaveDialog जैसी गैर-डेल्फी संवादों से अलग काम किया। Execute
पर कॉल करने से ठीक पहले Application.ModalPopupMode := pmAuto ;
जोड़कर मैं उन्हें काम करने में सक्षम था।
- बचाने खुले संवाद
- ट्रे आइकन से एप्लिकेशन
- ट्रे आइकन से एप्लिकेशन को बहाल कम से कम:
से मेरा मतलब है कि बचाने के संवाद निम्न क्रम के बाद सामने था, "यह काम करने के लिए मिल गया है"
जबकि यह ModalPopupMode := pmAuto
के बिना मुख्य रूप के पीछे था।
तो मुझे उम्मीद है कि ये परिवर्तन (अभी तक अप्रत्याशित) समस्या में मदद करेंगे।
पता लगाना जो खिड़की ध्यान केंद्रित किया है और ले जा सुधारात्मक कार्रवाई करने में मदद करने नहीं जा रहा है। आपको स्रोत पर समस्या से निपटने की जरूरत है। और इसका मतलब है कि खिड़की के स्वामित्व को समझना (यानी पॉपअपपेरेंट)। –
धन्यवाद @ डेविड।यह पता लगाने के लिए कि कौन सी खिड़की पर ध्यान केंद्रित किया गया है निश्चित रूप से मदद करने जा रहा है क्योंकि यह संभवतः मुझे दिखाएगा कि मैं समस्या को पुन: उत्पन्न कैसे कर सकता हूं, जिसे मैं वर्तमान में नहीं कर सकता। – rossmcm
एक बार जब आप इसे प्रकट कर लेते हैं तो आपको स्वामित्व संबंधों को समझने के लिए Spy ++ जैसे कुछ का उपयोग करने में सक्षम होना चाहिए। मैं इसे बाहर से डीबग करने की कोशिश करता हूं, कम से कम जब तक आपके पास एक रिप्रो न हो। –