2009-05-14 10 views
6

पर समायोजित नहीं करता है मुझे एक समस्या है जिसे मैं हल करने में असमर्थ हूं, भले ही मैं इसे करने का प्रयास करने में काफी समय व्यतीत करता हूं।ग्रिडपैनल पहले आकार

मैं आम तौर पर फॉर्म पर नियंत्रण संरेखित करने के लिए ग्रिडपैनल्स का उपयोग करता हूं। हालांकि, यह एक कष्टप्रद बग है। जब ग्रिडपैनल संरेखण मोड alClient है और मैं अपनी मूल विंडो को अधिकतम करता हूं, तो ग्रिडपैनल उस विंडो के नए आकार में समायोजित होता है, हालांकि, ग्रिड पर रखे नियंत्रण नहीं करते हैं। वे खिड़की के आकार से पहले एक ही स्थिति में रहते थे। यह केवल पहली विंडो के अधिकतमकरण पर होता है। यदि विंडो को पहले मैन्युअल रूप से आकार दिया गया है, तो हरकत ठीक है। मुझे लगता है कि ग्रिड दूसरे आकार के आयोजन (??) के बाद अपने बच्चे के नियंत्रण को समायोजित करता है।

क्या करना है यदि ग्रिडपैनल इस बग की बात करता है तो ठीक से काम करना है? यह संदेश भेजने के लिए पर्याप्त हो सकता है (लेकिन क्या संदेश?), मुझे नहीं पता। मैंने रीयलइन, रीफ्रेश इत्यादि का उपयोग करने की कोशिश की, लेकिन उन्होंने मदद नहीं की।

अग्रिम में आपकी सहायता के लिए धन्यवाद,

Mariusz।

उत्तर

7

आह, मेरे पास भी इसी तरह के मुद्दे हैं। यह वीसीएल में एक आकार बदलने वाली समस्या से संबंधित हो सकता है। आप the fix by Andreas Hausladen आज़मा सकते हैं। ऐसा लगता है कि ज्यादातर मामलों में मेरे लिए काम करना प्रतीत होता है।

1

मुझे कई परियोजनाओं पर भी यह त्रुटि हुई है। मुझे यकीन नहीं है कि मैंने इसे कैसे हल किया (यह मेरे पिछले नियोक्ता के लिए प्रोजेक्ट पर था, मेरे पास अब इस स्रोत कोड तक पहुंच नहीं है)। मुझे लगता है कि मैंने उस पैरेंट फ्रेम या फॉर्म को रीड्रेश/रीफ्रेश किया था जिस पर ग्रिडपैनल रखा गया था।

0

मालिक कॉल के आकार पर GridPanel.Invalidate। मैंने इसका परीक्षण नहीं किया। मुझे उम्मीद है कि यह काम है।

2

मुझे एक चाल मिली।

OnResize में ग्रिडपेनल के माता-पिता की घटना, ग्रिडपैन की चौड़ाई 1 पिक्सेल बदलें।

तो gridPanel देखेंगे आकार बदल गया है, तो पुन: व्यवस्थित gridpanel में उप नियंत्रण ..

नमूना नीचे है ..

procedure TForm1.FormResize(Sender: TObject); 
begin 
    GridPanel1.Width := GridPanel1.Width - 1; // subtract 1 
    GridPanel1.Width := GridPanel1.Width + 1; // recover width by adding 1 
end; 
+0

कुछ हद तक संबंधित http://qc.embarcadero.com/wc/qcmain.aspx?d=45827 – manlio

2

चौड़ाई बदलने/नियंत्रण अमान्य मेरे लिए काम नहीं करता है (आरएडी स्टूडियो के हाल के संस्करणों के साथ कुछ बदल गया?)।

वैसे भी है कि रेखा के साथ एक समान, सरल समाधान नहीं है:

procedure TForm1.FormResize(Sender: TObject); 
begin 
    GridPanel1.ControlCollection.BeginUpdate; 
    GridPanel1.ControlCollection.EndUpdate; 
end;