हमारे पास कई फ्रेमों का एक जीयूआई है जो उनकी सामग्री को गतिशील रूप से बनाते हैं। प्रत्येक फ्रेम इनपुट फ़ील्ड के रूप में उपयोग किए जाने के लिए पैनल, लेबल, संपादन, comboboxes आदि बनाता है। यह बहुत अच्छी तरह से काम कर रहा है और हम प्रत्येक फ्रेम को अलग-अलग धागे में अपनी सामग्री बनाने की योजना बनाने की भी योजना बना रहे हैं।डेल्फी Win32: गतिशील रूप से बनाए गए नियंत्रण (अभिभावक संपत्ति)
हालांकि एक बड़ी समस्या है: यह धीमी है! नियंत्रण बनाना कोई समय नहीं लेता है लेकिन माता-पिता की संपत्ति को सेट करना बहुत समय लगता है।
मैंने प्रक्रिया को तेज करने के कई तरीकों की कोशिश की है लेकिन बिना किसी किस्मत के। मैंने सक्षम = गलत, दृश्यमान = गलत, अक्षम करने योग्य, लॉकविंडो अपडेट, WM_SETREDRAW की कोशिश की है ... लेकिन कुछ भी नियंत्रण के अभिभावक को स्थापित करने की समय लेने वाली प्रक्रिया को प्रभावित नहीं करता है।
भले ही हम धागे का उपयोग करते हैं, इसमें समय लगेगा क्योंकि वीसीएल कार्यों को सिंक्रनाइज़ के भीतर बुलाया जाना चाहिए।
क्या निर्माण और नियंत्रण के प्रदर्शन को गति देने का कोई और तरीका है?
सधन्यवाद, मैगनस
संपादित करें: कोई डेटा अवगत घटकों रहे हैं या किसी घटनाओं जीयूआई में शुरू हो गया। मैं केवल नियंत्रण बना रहा हूं और उन्हें प्रदर्शित कर रहा हूं। टाइमर का उपयोग करके मैंने समय लेने वाले भाग के रूप में नियंत्रण माता-पिता (AControl.Parent: = AOwner) के असाइनमेंट की पहचान की है।
संपादित करें 2: जैसा कि नीचे की समस्या में दिखाया गया है, गति समस्या माता-पिता को सेट नहीं कर रही है बल्कि नियंत्रण की पेंटिंग है। जब मैंने उस समय का परीक्षण किया जब कंटेनर दिखाई दे रहा था और माता-पिता को नियंत्रण की तत्काल पेंटिंग की वजह से स्थापित किया गया था।
संपादित करें 3: हमारे गतिशील जीयूआई का एक और समय उपभोग करने वाला हिस्सा comboboxes को आइटम असाइन कर रहा है। ComboBox.Items.Assign (DataItems) जहां DataItems में तीन से छह आइटम नहीं हैं।
मेरी मदद करने में समय लेने के लिए सभी को धन्यवाद!
एकाधिक धागे का उद्देश्य उपयोगकर्ता को अन्य भागों (फ्रेम) में लोड होने पर उपयोगकर्ता इंटरफ़ेस के एक हिस्से में काम करना जारी रखना होगा। मैं समझता हूं कि यह तेज़ नहीं हो सकता है लेकिन कम से कम उपयोगकर्ता को इसे खत्म करने की प्रतीक्षा नहीं करनी पड़ेगी। –
धन्यवाद, मैं अब के लिए थ्रेडिंग छोड़ दूंगा, हालांकि यह अभी भी मेरे लिए एक अच्छा विचार है। :-) –