쉘 경량 유틸리티 함수 라이브러리의 SHAutoComplete()
함수를 사용하여 모달 대화 상자의 편집 필드에 대한 경로 자동 완성을 사용하도록 설정하고 있습니다.SHAutoComplete() 목록 상자가 현재 표시되어 있는지 어떻게 확인할 수 있습니까?
Esc 키를 누르면 대화 상자가 닫히고 자동 완료가 활성화되지 않은 경우에만 대화 상자가 닫혀 야합니다.
포커스가있는 편집 컨트롤에 대해 완료 목록이 현재 표시되어 있는지 여부를 어떻게 확인할 수 있습니까?
편집 :
나는 윈도우 XP (64)에 나를 위해 작동하지 않습니다
procedure TMyForm.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_ESCAPE then
ModalResult := mrCancel;
end;
데이비드
에 의해 게시 코드 델파이 2009을 사용하고 있습니다 - 대화가 닫혀 도착합니다.
+1, 좋은 질문입니다. 'IAutoComplete'가리스트를 보여주고 있는지 확인하는 것 이외에 수동으로 [invoke it] 할 수 있는지 궁금합니다. (http://stackoverflow.com/q/9077396/960757). – TLama
그래서, 지금 당신의 프로그램에서 Esc 키가 자동 완성 창을 취소하고 * 대화 상자를 닫음을 말하고 있습니까? 그렇다면 autocomplete 객체가 키보드 메시지를 이미 처리했기 때문에 놀랍습니다. 따라서 Esc 키를 가로 채서 전달하지 않는 것이 좋습니다. –
@Rob : 맞습니다. 취소 버튼의'Cancel' 속성을 설정 해제하고 대신'KeyPreview'와'OnKeyDown'을 사용했지만, Esc 키가 완료 목록을 취소 했음에도 불구하고 여전히 호출됩니다. – mghie