मैं विंडोज एक्सई 2, TVirtualStringTree
, और एक TComboBox
का उपयोग एक संपादक के रूप में कर रहा हूं।माउस-व्हील गलत नियंत्रण पर संदेश भेज रहा है
जब मैं TComboBox
सीधे फॉर्म पर रखता हूं, तो रन-टाइम पर मैं सूची को छोड़ सकता हूं और माउस व्हील सूची में वस्तुओं को ऊपर और नीचे (वांछित) स्क्रॉल करता है। हालांकि, TComboBox
रन-टाइम पर TVirtualStringTree
द्वारा एक इन-प्लेस संपादक के रूप में बनाया गया है, भले ही नव निर्मित कॉम्बो बॉक्स पर ध्यान केंद्रित किया गया हो, माउस व्हील का WM_MOUSEWHEEL
संदेश पेड़ नियंत्रण पर भेजा गया है, न कि कॉम्बो बॉक्स।
यह स्पष्ट है क्योंकि कॉम्बो बॉक्स ड्रॉप-डाउन सूची में आइटम स्क्रॉल नहीं करते हैं। इसके बजाय, कॉम्बो बॉक्स स्क्रॉल के पीछे पेड़ नियंत्रण। कॉम्बो बॉक्स का निश्चित भाग पेड़ के साथ चलता है, लेकिन ड्रॉप-डाउन सूची कॉम्बो बॉक्स के निश्चित भाग से डिस्कनेक्ट हो जाती है और स्थानांतरित नहीं होती है (जैसा चित्रित किया गया है)।
दोनों ही मामलों में TComboBox.Style
csDropDownList
को तैयार है।
FCBox := TComboBox.Create(TreeControl);
FCBox.Visible := False;
FCBox.Parent := TreeControl;
// ... add items to combo box ...
FCBox.Visible := True;
FCBox.SetFocus;
FCBox.DroppedDown := True;
यह जहां माउस मँडरा रहा है कोई फर्क नहीं पड़ता: जब कॉम्बो बॉक्स वृक्ष की यथा-स्थान संपादक के रूप में बनाया गया है, यह इस तरह से किया जाता है। यह कॉम्बो बॉक्स ड्रॉप-डाउन सूची में सीधे आइटमों पर हो सकता है और पृष्ठभूमि में पेड़ नियंत्रण अभी भी स्क्रॉल करता है। कॉम्बो बॉक्स में आइटम स्क्रॉल करने का एकमात्र तरीका इसकी स्क्रॉल बार का उपयोग करना है।
नियंत्रण नियंत्रण के माता-पिता को नियंत्रण के बजाए माउस व्हील संदेश प्राप्त करने का क्या कारण होगा (इस मामले में, TComboBox
)?
मुझे यह आलेख मिला (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645617(v=vs.85).aspx) जो बताता है कि संदेश नियंत्रण में भेजा गया है, और यदि यह इसे संभाल नहीं करता है, तो इसे तब तक चेन भेजा जाता है जब तक इसे संभाला नहीं जाता है। मैं अब यह देखने के लिए देख रहा हूं कि 'TVirtualStringTree' ऐसा कुछ करता है जो 'TComboBox' संदेश को संभालता है। –