2009. 8. 17. 16:40

[Delphi] TWebBrowser 자동 활성화 시키기

델파이에서 TWebBrowser를 이용해 인터넷 페이지를 다음과 같이 띄우면

WebBrowser1.Navigate('http://www.sjworks.net');

바로 브라우저가 활성화가 되지 않아, 마우스의 휠로 바로 스크롤을 조작할 수 없다.
(일부 페이지 소스내 활성화 스크립트가 있는 것 제외)

쉽게 생각할 수 있는 방안이 다음과 같을텐데

WebBrowser1.Navigate('http://www.sjworks.net');
WebBrowser1.SetFocus;

이것은 잘못된 방법으로 원하는데로 동작하지 않을 것이다.

브라우저를 제대로 활성화 할려면 TWebBrowser 컴포넌트가 아닌 브라우저의 Document 객체를 활성화 해야한다.
Document객체는 다음과 같이 활성화 시킬 수 있다.

WebBrowser1.OleObject.Document.Focus();


이를 제대로 활용한 예제

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://www.sjworks.net');
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
  WebBrowser1.Navigate('http://calender.daum.net/');
end;


procedure TForm1.WebBrowser1NavigateComplete2(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  WebBrowser1.OleObject.Document.Focus();
end;


범하기 쉬운 실수

WebBrowser1.Navigate('http://www.sjworks.net');
WebBrowser1.OleObject.Document.Focus();

Navigate를 하면 페이지 로딩이 시작되는데 되기도 전에 Document에대한 호출하는 과정에서 오류가 발생하게 된다.

Trackback 0 Comment 0