2013-06-21 157 views
1

我一直無法弄清楚爲什麼我無法手動滾動瀏覽TComboBox組件,當我以編程方式導致下拉選擇列表出現。這裏是我使用的代碼:手動滾動瀏覽TComboBox

SendMessage(ComboBox1.handle, CB_SHOWDROPDOWN, Integer(True), 0); 

這會導致下拉選擇列表出現。但是,如果我嘗試使用我的鍵盤並使用向上和向下箭頭鍵,則下拉選擇列表將立即關閉。使用鍵盤上/下導航鍵時,如何防止列表自動關閉?

回答

5

激活組合框。最好使用DroppedDown屬性,這也會使組合框無效以反映更改。

ActiveControl := ComboBox1; 
ComboBox1.DroppedDown := True; 
+2

值得關注的是OP的'CB_SHOWDROPDOWN'僅僅是一個更大的集重新激活和落下的組合框的完整序列所需的窗口消息之一(這就是爲什麼它不會對自己的工作)。同意這是更好的方法。 –

+0

添加ActiveControl:= ComboBox1;和ComboBox1.DroppedDown:= True;到代碼沒有區別。一旦向下箭頭鍵被觸摸,下拉列表仍然繼續自動關閉。 – user1527613

+0

@user - 在我的測試中,使用帶有按鈕和組合框的全新窗體,激活組合框會發揮重要作用。其實如果我沒有激活它,項目不能用鍵盤改變,但下拉不能關閉。我建議你也這樣做,並嘗試一個新項目。 –