手动滚动TComboBox

use*_*613 1 delphi delphi-7 delphi-2010 delphi-xe2

当我以编程方式导致下拉选择列表出现时,我无法弄清楚为什么我无法手动滚动TComboBox组件.这是我正在使用的代码:

SendMessage(ComboBox1.handle, CB_SHOWDROPDOWN, Integer(True), 0);
Run Code Online (Sandbox Code Playgroud)

这会导致下拉选择列表出现.但是,如果我尝试使用键盘并使用向上和向下箭头键,则下拉选择列表会立即关闭.使用键盘上/下导航键时如何防止列表自动关闭?

Ser*_*yuz 5

激活ComboBox.并且您最好使用该DroppedDown属性,这也会使组合框无效以反映变化.

ActiveControl := ComboBox1;
ComboBox1.DroppedDown := True;
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,OP的`CB_SHOWDROPDOWN`仅仅是一个更大的集重新激活和落下的组合框的完整序列所需的窗口消息之一(这就是为什么它不会对自己的工作).同意这是更好的方法. (2认同)