【问题标题】:Manually scrolling through a TComboBox手动滚动 TComboBox
【发布时间】:2013-06-21 20:25:05
【问题描述】:

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

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

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

【问题讨论】:

    标签: delphi delphi-xe2 delphi-7 delphi-2010


    【解决方案1】:

    激活组合框。而且您最好使用DroppedDown 属性,它也会使组合框无效以反映更改。

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

    【讨论】:

    • 值得注意的是,OP 的 CB_SHOWDROPDOWN 只是重新创建激活和下拉组合框的完整序列所需的大量窗口消息之一(这就是它不能单独工作的原因)。同意这是更可取的方法。
    • 添加 ActiveControl := ComboBox1;和 ComboBox1.DroppedDown := True;对代码没有区别。只要按下向下箭头键,下拉列表仍会继续自动关闭。
    • @user - 在我的测试中,全新的表单有一个按钮和一个组合框,激活组合框会有所不同。实际上,如果我不激活它,则无法使用键盘更改项目,但下拉菜单也不会关闭。我建议您也这样做,并在一个新项目中尝试一下。
    • @J... 两者都将在 SetActiveControl 中结束。对于第一条评论 - 是的,DroppedDown 也使组合客户端矩形无效。纳入答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    • 1970-01-01
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多