मुझे एक फिक्स मिला। क्योंकि TComboBoxEx वर्ग GetItemHt समारोह को ओवरराइड करता है एक हार्ड-कोडेड 16. कोई संबंध जो भी हो,
- प्रकाशित ItemHeight संपत्ति के मूल्य के लिए मजबूर है 16 होने के लिए: डेल्फी इस से संबंधित कीड़े की एक जोड़ी के लिए लगता है आइटम के वास्तविक आकार के लिए - अजीब, क्योंकि यह पूरी तरह से TComboBox पर काम करता है। मुझे नहीं पता कि उन्होंने इस रणनीति के साथ क्यों जाने का फैसला किया। शायद यह सुनिश्चित करने के लिए कि छवियां हमेशा फिट होंगी।
- डेल्फी वास्तव में CB_SETITEMHEIGHT संदेश नहीं कॉल करता है, इसलिए यदि आप इस फ़ंक्शन को ओवरराइड करते हैं तो कुछ भी नहीं बदलता है।
अद्यतन:
रूप mghie से बताया, संदेश बुला विभिन्न डीपीआई सेटिंग्स पर अच्छी तरह से काम नहीं करता है में 15 की एक हार्ड-कोडेड मूल्य का उपयोग कर के अपने प्रारंभिक विचार। तो अब मैं ऊंचाई निर्धारित करने के लिए GetTextMetrics के लिए एक कॉलल का उपयोग कर रहा हूँ। फ़ॉन्ट की ऊंचाई में जोड़ा गया GetSystemMetrics (SM_CYBORDER) का मान है।
यह वीसीएल एक टीडीआईटी के आकार को निर्धारित करने के तरीके पर आधारित है।मुझे नहीं लगता कि यह काफी सही है, लेकिन चूंकि लक्ष्य कॉम्बोबॉक्सएक्स को टीडीआईटी के समान आकार रखना है, इसलिए यह संभवतः उतना करीब है जितना हम प्राप्त करेंगे। और यह 96, 120, 144 और 1 9 2 की डीपीआई सेटिंग्स में काम करता है।
कॉम्बोबॉक्सएक्स की ऊंचाई आइटम -1 की ऊंचाई से निर्धारित होती है। तो गिनती -1 के लिए आइटम 0 वास्तविक सूची आइटम हैं, लेकिन आइटम -1 संपादक के लिए उपयोग की जाने वाली ऊंचाई है। यदि आप उस ऊंचाई को 15 तक सेट करते हैं, तो नियंत्रण की ऊंचाई 21 पिक्सल (समस्याओं को स्केल करने के लिए ऊपर अपडेट देखें) को सही किया गया है। मुझे लगता है कि मेसन सही हो सकता है कि फ़ॉन्ट का आकार यहां एक हिस्सा निभाता है (शायद आइटम का आकार बदलता है), लेकिन आप इसे आइटम आकार को समायोजित करके ठीक काम कर सकते हैं।
ऐसा लगता है कि 9 6 डीपीआई 16-पिक्सेल उच्च छवियों में एक नया (मेरे दृश्य में, छोटी) समस्या पेश करने लगती है, जब संपादक भाग में दिखाया गया है, लेकिन यह शायद ही ध्यान देने योग्य है। - साफ ठीक
GetTextMetrics(Canvas.Handle, TM);
SendMessage(Handle, CB_SETITEMHEIGHT, -1,
GetSystemMetrics(SM_CYBORDER) * 2 + TM.tmHeight);
स्रोत
2009-08-21 14:33:07
वाह:
तो ठीक है तो, इस कोड को कॉल करने के लिए है! मेरा सुझाव है कि आप इसे अपने स्वयं के प्रश्न के लिए "स्वीकृत उत्तर" के रूप में जोड़ें। एक उथल-पुथल के लायक! – Roddy
उत्तर जोड़ा गया, लेकिन मैं इसे केवल एक या दो दिनों में स्वीकार कर सकता हूं। एक चेतावनी भी है जिसमें छवि का प्रदर्शन शामिल है - नीचे मेरा जवाब देखें। –