如何检查当前是否显示SHAutoComplete()列表框?

mgh*_*hie 5 delphi winapi autocomplete

我正在使用SHAutoComplete()Shell Lightweight Utility Functions库中的函数为模式对话框中的编辑字段启用路径自动完成功能。

Esc按下键时,对话框应关闭,但前提是未激活自动完成功能。

如何检查当前针对重点编辑控件的完成列表?

编辑:

我在Windows XP 64上使用Delphi2009。该代码由David发布

procedure TMyForm.FormKeyDown(Sender: TObject; var Key: Word; 
  Shift: TShiftState);
begin
  if Key = VK_ESCAPE then
    ModalResult := mrCancel;
end;
Run Code Online (Sandbox Code Playgroud)

对我不起作用-对话框关闭。

Dav*_*nan 1

我无法重现你的问题。以下OnKeyDown处理程序结合KeyPreview := True以空形式给出所需的行为。

procedure TMyForm.FormKeyDown(Sender: TObject; var Key: Word; 
  Shift: TShiftState);
begin
  if Key=VK_ESCAPE then
    ModalResult := mrCancel;
end;
Run Code Online (Sandbox Code Playgroud)

我猜你的表单中还有其他东西正在关闭对话框。