有没有办法在按下按钮时下拉TJvComboEdit的自动完成列表?

时间:2012-01-31 09:50:57

标签: delphi interface autocomplete invoke jvcl

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

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

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

1 个答案:

答案 0 :(得分:2)

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;