2012-08-22 37 views
10

विषयों के साथ एक डेल्फी 2010 अनुप्रयोग में सक्षम मैं एक clMoneyGreen पृष्ठभूमि के साथ एक फार्म में दो TPageControls (एक दूसरे के अंदर) है:सिस्टम थीम खोने के बिना TPageControl पृष्ठभूमि रंग को कैसे ठीक करें?

enter image description here

बाहरी पेज नियंत्रण सही ढंग के रंग के साथ इसकी पृष्ठभूमि आकर्षित मूल घटक, आंतरिक पृष्ठ नियंत्रण हालांकि इसके मूल नियंत्रण (टीटीएबीशीट) के सफेद के बजाय clbtnFace (छवि में लाल इलिप्सिस) के साथ अपनी पृष्ठभूमि खींचता है। पृष्ठ नियंत्रण को अपने विंडोज क्लासिक उपस्थिति (विंडोज़ थीम खोना) पर वापस किए बिना इसे ठीक करने का कोई तरीका है?

Google और यहां पर स्टैक ओवरफ़्लो में मिले सभी फ़िक्सेस में स्वामी ड्रॉ शामिल है जो पेज नियंत्रण को अपनी थीमिंग खो देता है।

मैं नया पृष्ठ नियंत्रण घटक WM_ERASEBKGND खिड़कियों संदेश को संभालने के लिए एक विधि के साथ TPageControl से विरासत में मिला बनाने की कोशिश की है:

procedure TMyPageControl.WMEraseBkGnd(var Msg: TWMEraseBkGnd); 
begin 
    if Parent is TCustomPageControl then 
    begin 
    Brush.Color := clWhite; 
    Windows.FillRect(Msg.dc, ClientRect, Brush.Handle); 
    Msg.Result := 1; 
    end 
    else 
    inherited; 
end; 

यह पृष्ठभूमि सफेद पेंट लेकिन किसी अन्य विधि WM_ERASEBKGND के बाद कहा जाता है (मैं TWinControl के अनुमान लगा रहा हूँ WM_PAINT विधि) सफेद पृष्ठभूमि पर ग्रे रंग repaint।

नोट: मैं इसका शोध कर रहा हूं क्योंकि मैं डेल्फी 7 से पोर्ट किए गए बड़े एप्लिकेशन पर थीमिंग लागू कर रहा हूं, इसलिए मैं इस समस्या को व्युत्पन्न घटक के माध्यम से हल करने का प्रयास कर रहा हूं: मैं आसानी से सभी 207 खोज और प्रतिस्थापित कर सकता हूं मेरी नई कक्षा के साथ टीपीज कंट्रोल घटनाएं, लेकिन उनमें से कुछ के पीछे पैनल रखने के लिए और अधिक समय की आवश्यकता होगी।

उत्तर

11

यह डेल्फी 2010 में एक ज्ञात बग है। आप बाहरी पैनल टैबलेट का एक पैनल जोड़कर इसके आसपास काम कर सकते हैं, और आंतरिक पृष्ठ नियंत्रण के माता-पिता हैं।

मुझे नहीं पता कि यह समस्या को हल क्यों करता है। मैंने केवल खुद को कामकाज की खोज की क्योंकि मैंने देखा कि मेरे ऐप में, एकमात्र नेस्टेड टैब/पृष्ठ नियंत्रण जो सही ढंग से प्रस्तुत किया गया था, वे पैनल के साथ उपयुक्त रूप से हस्तक्षेप किए गए थे।

यदि मुझे सही याद है, तो दोष नवीनतम डेल्फी संस्करणों में मौजूद नहीं है।

+2

यह [embarcadero पेज] (http://qc.embarcadero.com/wc/qcmain.aspx?d=80381) अभी भी बग को –

+2

खोलने की रिपोर्ट करता है, वैसे, कृपया इस पृष्ठ को पढ़ने के बारे में जानने के लिए उत्तर स्वीकार करना: http://meta.stackexchange.com/questions/5234/ धन्यवाद –

+0

एक दोस्त के लिए धन्यवाद, मैंने डेल्फी XE2 स्थापना पर अपना हाथ प्राप्त करने में कामयाब रहा है और पृष्ठ नियंत्रण अपेक्षित काम करता है। मैं थोड़ा और इंतजार करने जा रहा हूं, अगर कोई और सवाल का जवाब नहीं दे रहा हूं तो मैं आपका जवाब चुनने जा रहा हूं। –

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

  • कोई संबंधित समस्या नहीं^_^