2010-02-04 23 views
6

क्या टीएमईओ, टीएलिस्टबॉक्स, आदि जैसे स्टैंडअर्ट नियंत्रणों के स्क्रॉलबार पर पेंट करना संभव है?क्या स्क्रॉलबार पर पेंट करना संभव है?

मुझे केवल स्क्रॉलबार पर कुछ बुनियादी आकार खींचने की ज़रूरत है और मैं स्ट्रैच से पूरी स्क्रॉलिंग सामग्री को लागू करने से बचने की कोशिश कर रहा हूं। कोई संकेतक? TIA!

उत्तर

9

यह वास्तव में संभव है, आप WM_NCPAINT संदेश पर एक नज़र डालना चाहते हैं, यह WM_PAINT संदेश का गैर-क्लाइंट क्षेत्र संबंधित संस्करण है। यह एक आसान काम नहीं है, हालांकि आप पूरी स्क्रॉलबार को स्वयं ड्राइंग करने वाले नहीं हैं, इसलिए यह अधिक सीधे आगे हो सकता है।

इसके अलावा अधिक आपको पता चल सकता this article [1]The Code Project से दिलचस्प, कोड सी में है ++ और न पूरी तरह से अच्छी तरह से स्वरूपित है, लेकिन यह कैसे एक स्क्रॉलबार की ownerdrawing प्राप्त कर सकते थे करने के लिए के रूप में कुछ विचार देना चाहिए। टीसीपी पर पिछले उल्लेख परियोजना से

Screenshot from project at The Code Project
स्क्रीनशॉट।

पहली परियोजना आपको पता चल सकता this project [2] दिलचस्प है, यह भी स्क्रॉलबार ownerdraws, मुझे पता है कि आप केवल स्क्रॉलबार के शीर्ष पर चित्रकारी करना चाहते हूँ, लेकिन मेरी शर्त है कि यह आप के साथ-साथ में मदद मिलेगी है इसके अलावा, यह भी शामिल है स्रोत कोड भी।

Screenshot from Cool Scrollbar project http://www.catch22.net/img/coolscroll02.gif
कूल स्क्रॉलबार परियोजना से स्क्रीनशॉट।

यह कम से कम क्या यह मेरी संक्षिप्त से तरह लग रहा था कि आदेश स्क्रॉल पट्टी बटन आदि कोड forms.pas फ़ाइल में पाया जा सकता, की स्थिति के बारे में जानकारी प्राप्त करने के लिए VCL स्रोत कोड की जांच करने के मदद कर सकता है खोज। उम्मीद है कि इनमें से कोई भी मदद की जा सकती है। सौभाग्य।

[1] http://www.codeproject.com/KB/dialog/skinscrollbar.aspx
[2] http://www.catch22.net/tuts/coolscroll

+0

बढ़िया! धन्यवाद। –

1

ध्वनि आप (TMemo या जो कुछ भी से उत्पन्न होने वाली) एक कस्टम नियंत्रण बना सकते हैं की तरह। आप overridePaint उस नियंत्रण की प्रक्रिया को here वर्णित कर सकते हैं।

मुझे नहीं पता कि इससे आपको स्क्रॉलबार पर आकर्षित करने की अनुमति मिल जाएगी, लेकिन उम्मीद है कि यह आपको कस्टम नियंत्रण बनाने में मदद करेगा।

संपादित टॉमी के जवाब और मेरा एक combonation: Here एक उदाहरण (थोड़ा और अधिक जटिल यद्यपि) है एक कस्टम नियंत्रण में संदेशों को संभालने के लिए WindowProc विधि का उपयोग करता है। यदि आप नियंत्रण बनाते हैं तो आप WM_NCPAINT संदेश को संभालने में सक्षम हो सकते हैं। डेल्फी में विंडोज संदेश हैंडलिंग के बारे में here कुछ और जानकारी है।

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