Windows XE2, TVirtualStringTree
ve bir TComboBox
yerinde bir editör olarak kullanıyorum.Fare tekerleği yanlış kontrole mesaj gönderiliyor
TComboBox
'u doğrudan forma yerleştirdiğimde, çalışma zamanında listeyi açabilirim ve fare tekerleği listedeki öğeleri yukarı ve aşağı kaydırır (istendiği gibi). Bununla birlikte,, çalışma yerinde düzenleyici olarak TVirtualStringTree
tarafından çalışma zamanında oluşturulduğunda, yeni oluşturulan birleşik giriş kutusunun odaklanmasına rağmen, fare tekerleğinin WM_MOUSEWHEEL
iletisi, birleşik kutuya değil, ağaç denetimine gönderilir.
Bu, açılan kutudaki öğeler kaydırma yapmıyor olduğundan aşikar. Bunun yerine, açılan kutunun arkasındaki ağaç denetimi kaydırır. Birleşik kutunun sabit kısmı ağaçla birlikte hareket eder, ancak açılan liste açılan kutunun sabit kısmından ayrılır ve hareket etmiyor (tasvir edildiği gibi).
Her iki durumda da TComboBox.Style
csDropDownList
ayarlanır. Fare gezinip nerede
FCBox := TComboBox.Create(TreeControl);
FCBox.Visible := False;
FCBox.Parent := TreeControl;
// ... add items to combo box ...
FCBox.Visible := True;
FCBox.SetFocus;
FCBox.DroppedDown := True;
farketmez: açılan kutu ağacın yerinde editör olarak oluşturulduğunda, bu şekilde yapılır. Açılan kutu açılır listesindeki öğelerin doğrudan üzerinde olabilir ve arka planda ağaç denetimi hala kaydırma yapan bir tanesidir. Birleşik kutudaki öğeleri kaydırmanın tek yolu kaydırma çubuğunu kullanmaktır.
Odaklanmış denetimin üst tarafının, denetimin kendisi yerine fare tekerleği iletilerini almasına neden olan şey (bu durumda, TComboBox
)?
Bu makaleyi (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645617(v=vs.85).aspx) iletinin denetime gönderileceğini açıkladım. ve eğer işleyemezse, zincir işlenene kadar üst tarafa gönderilir. Şimdi 'TVirtualStringTree' 'TComboBox' mesajını işleme şeklini değiştirecek bir şey yapıp yapmadığını görmek için arıyorum. –