【问题标题】:Is there a way to drop down a TJvComboEdit's AutoComplete list when the button is pressed?按下按钮时有没有办法下拉 TJvComboEdit 的自动完成列表?
【发布时间】:2012-01-31 09:50:56
【问题描述】:

我有一个带有 TJvComboEdit 控件(来自 Jedi Visual Components 库,jvcl)的表单。这个控件有一个 AutoCompleteList,如果我将 AutoCompleteOptions 设置为 acoUpDownKeyDropsList,我可以在运行时通过按向上或向下键来显示这个列表。

到目前为止,这很好,但除此之外,我希望控件的按钮也显示该列表(就像 TComboBox 按钮一样),但我找不到任何方法来做到这一点。列表的显示似乎是由一些内部 IAutoComplete Windows 界面完成的,该界面没有公开用于显示列表的 api。

我错过了什么吗?或者我可以使用其他任何控件吗? (除了明显的TComboBox)?

【问题讨论】:

  • 这会不会有点奇怪。自动完成列表取决于已键入内容的上下文,并在您键入新键时更改。组合下拉按钮旨在显示所有可能的选项,而不仅仅是那些与部分键入的编辑文本匹配的选项。
  • 不,没关系,因为您也可以使用向上/向下键调用此(完整)列表。
  • 我一直在寻找一种干净的方法来调用IAutoComplete2 接口来下拉列表,但不幸的是,似乎没有(至少记录在案)方法来做到这一点(除了模拟按键)。

标签: delphi interface autocomplete invoke jvcl


【解决方案1】:

TJvComboEdit 使用 IAutoCompleteIAutoComplete2 接口实现自动完成功能,无法手动调用它们的下拉列表。

您可以使用以下 hack 将焦点设置到 TJvComboEdit 并模拟 键。

procedure TForm1.Button1Click(Sender: TObject);
begin
  if JvComboEdit1.CanFocus then
  begin
    JvComboEdit1.SetFocus;
    keybd_event(VK_DOWN, 0, 0, 0);
    keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);
  end;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 2016-06-26
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多