답변 감사드립니다.
우선 알려주신대로 폼선언 바깥쪽으로 위치를 옮기니 컴파일은 잘 됩니다만
edit창에서 자동완성기능을 테스트하기위해 타이핑을하면 shell32.dll 에러가 나네요
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, Options);
end;
api호출 부분은 이렇게 해줬습니다.
실행-cmd 창에서 regsvr32 shell32.dll 해준뒤에도 계속 에러가나는데 재설치를 해줘야 하나요?
kylix 님이 쓰신 글 :
: function SHAutoComplete(hwndEdit: HWnd; dwFlags: DWORD): HResult; stdcall; external 'Shlwapi.dll';
:
: 위 줄은 클래스(폼)의 메소드가 아니라 일반 함수로 작성하셔야 합니다.
:
: 폼선언 바깥쪽으로 위치를 옮기세요.
:
: TForm1 = class(...)
: ...
: end;
:
: function SHAutoComplete(hwndEdit: HWnd; dwFlags: DWORD): HResult; stdcall; external 'Shlwapi.dll';
:
: 델펀맨 님이 쓰신 글 :
: :
http://skyrack.tistory.com/1 여기서 본것을 토대로
: :
: : ShAutoComplete 기능을 이용해 자동완성을 구현하려 했는데요
: :
: : function SHAutoComplete(hwndEdit: HWnd; dwFlags: DWORD): HResult; stdcall; external 'Shlwapi.dll';
: :
: : 이 부분에서 에러가나네요
: :
: : [Error] AScombo.pas(326): Field definition not allowed after methods or properties
: :
: :
: : 그냥 procedure 선언하는 부분에 같이
: : .
: : .
: : procedure Button1Click(Sender: TObject);
: : procedure Button2Click(Sender: TObject);
: : function SHAutoComplete(hwndEdit: HWnd; dwFlags: DWORD): HResult; stdcall; external 'Shlwapi.dll';
: : procedure Edit1Change(Sender: TObject);
: : .
: : .
: : 이런식으로 선언해줬는데
: :
: : 위치가 잘못된건가요? 아니면 Shlwapi.dll을 따로 다운받아야 하는건가요
: :
: :
: :
: :
: :
: :
: :