2013-06-21 119 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 - 在我的测试中,使用带有按钮和组合框的全新窗体,激活组合框会发挥重要作用。其实如果我没有激活它,项目不能用键盘改变,但下拉不能关闭。我建议你也这样做,并尝试一个新项目。 –