자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi Shlwapi.dll SHAutoComplete를 이용한 자동완성 기능 문의
2016.09.20 18:15
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
http://skyrack.tistory.com/1
네이버나 구글 인터넷주소창 등에서 사용되는 자동완성기능을 찾아보다 위 링크애서 SHAutoComplete API를 이용한
자동완성에 대해 알게되었습니다.
따라해보면서
const
SHACF_AUTOSUGGEST_FORCE_ON = $10000000;
SHACF_AUTOSUGGEST_FORCE_OFF = $20000000;
SHACF_AUTOAPPEND_FORCE_ON = $40000000;
SHACF_AUTOAPPEND_FORCE_OFF = $80000000;
SHACF_DEFAULT = $0;
SHACF_FILESYSTEM = $1;
SHACF_URLHISTORY = $2;
SHACF_URLMRU = $4;
상수 선언해주고
public
{ Public declarations }
property Logined : Boolean read FLogined write SetLogined;
end;
function SHAutoComplete(hwndEdit: HWnd; dwFlags: DWORD): HResult; stdcall; external 'Shlwapi.dll';
var
Form1: TForm1;
hTooltip: Cardinal;
ti: TToolInfo;
buffer: array[0..255] of char;
TempDateTime : TDatetime;
implementation
API도 선언한뒤
procedure TForm1.Edit1Change(Sender: TObject);
var
Options: dWord;
begin
Options := SHACF_FILESYSTEM or SHACF_URLHISTORY or SHACF_URLMRU or
SHACF_AUTOSUGGEST_FORCE_ON or SHACF_AUTOAPPEND_FORCE_ON;
SHAutoComplete(Edit1.Handle, 0);
end;
이렇게 호출을 해주었는데요
컴파일은되는데 edit1 에 타이핑을하면
oleaut32.dll 과
shell32.dll
두개의 에러가 발생했었는데
인터넷 쿠키를 삭제후 재부팅하고나니 edit1에 입력을해도 에러는 발생하지 않습니다.
하지만 자동완성기능도 되질 않네요
머가 잘못된걸까요 알려주시면 감사하겠습니다.
Delphi Shlwapi.dll SHAutoComplete를 이용한 자동완성 기능 문의
2016.09.20 18:15
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
http://skyrack.tistory.com/1
네이버나 구글 인터넷주소창 등에서 사용되는 자동완성기능을 찾아보다 위 링크애서 SHAutoComplete API를 이용한
자동완성에 대해 알게되었습니다.
따라해보면서
const
SHACF_AUTOSUGGEST_FORCE_ON = $10000000;
SHACF_AUTOSUGGEST_FORCE_OFF = $20000000;
SHACF_AUTOAPPEND_FORCE_ON = $40000000;
SHACF_AUTOAPPEND_FORCE_OFF = $80000000;
SHACF_DEFAULT = $0;
SHACF_FILESYSTEM = $1;
SHACF_URLHISTORY = $2;
SHACF_URLMRU = $4;
상수 선언해주고
public
{ Public declarations }
property Logined : Boolean read FLogined write SetLogined;
end;
function SHAutoComplete(hwndEdit: HWnd; dwFlags: DWORD): HResult; stdcall; external 'Shlwapi.dll';
var
Form1: TForm1;
hTooltip: Cardinal;
ti: TToolInfo;
buffer: array[0..255] of char;
TempDateTime : TDatetime;
implementation
API도 선언한뒤
procedure TForm1.Edit1Change(Sender: TObject);
var
Options: dWord;
begin
Options := SHACF_FILESYSTEM or SHACF_URLHISTORY or SHACF_URLMRU or
SHACF_AUTOSUGGEST_FORCE_ON or SHACF_AUTOAPPEND_FORCE_ON;
SHAutoComplete(Edit1.Handle, 0);
end;
이렇게 호출을 해주었는데요
컴파일은되는데 edit1 에 타이핑을하면
oleaut32.dll 과
shell32.dll
두개의 에러가 발생했었는데
인터넷 쿠키를 삭제후 재부팅하고나니 edit1에 입력을해도 에러는 발생하지 않습니다.
하지만 자동완성기능도 되질 않네요
머가 잘못된걸까요 알려주시면 감사하겠습니다.
음 지울까 하다가 자답달아둡니다.
var
Options: dWord;
begin
Options := SHACF_FILESYSTEM or SHACF_URLHISTORY or SHACF_URLMRU or
SHACF_AUTOSUGGEST_FORCE_ON or SHACF_AUTOAPPEND_FORCE_ON;
SHAutoComplete(Edit1.Handle, 0);
이 부분을 EditChange 가 아니라
formcreate 부분에서 호출해주니 잘되네요 --;;;
근데 왜 한글은 안되는거지