델파이

delphi TWebbrowser 의 이미지 뷰 활용, 높이 맞추기, 404에러처리

미스터몽키 2018. 8. 18. 16:42


/*  TWebBrowser 이미지 뷰 활용 */


델파이에 TWebBrowser 는  Microsoft 사의 Internet Explorer 와 동일하다.


사진 이미지(*.jpg, *.png)나 pdf 파일을 보여줄 수 있고 공지사항을 html로 만들고 보여줄 때 편리하다.


이미지의 경우 가로, 세로, 파일크기 등의 정보들도 확인할 수 있다.


1
2
3
4
5
6
7
WebBrowser1.OleObject.Document.Images.Item(0).Src;        //1번째 이미지의 위치
WebBrowser1.OleObject.Document.Images.Item(0).Width;     //이미지의 width
WebBrowser1.OleObject.Document.Images.Item(0).Height;    //이미지의 height
WebBrowser1.OleObject.Document.FileSize;                          //이미지의 크기
WebBrowser1.OleObject.Document.body.scrollHeight;            // 문서 전체 높이
WebBrowser1.OleObject.Document.documentElement.scrollHeight;  // 세로스크롤의 표현 높이 



/*  브라우저 자체 크기 조절 */
1
2
3
4
5
6
7
WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.5;  // 1이 기준

//  대충 브라우저 높이에 맞게
WebBrowser1.OleObject.Document.Body.Style.Zoom := WebBrowser1.Height / (WebBrowser1.OleObject.Document.body.scrollHeight);  



/*  문서 크기 조절*/
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm2.Button8Click(Sender: TObject);
var pvaIn, pvaOut: OleVariant;
    img_w,img_h, r: integer;
begin
//웹페이지 세로 맞춤
  img_w := WebBrowser1.OleObject.Document.Images.Item(0).Width;  //1번째 이미지의 width
  img_h := WebBrowser1.OleObject.Document.Images.Item(0).Height;  //1번째 이미지의 Height
  r := Trunc(100*(img_h / WebBrowser1.OleObject.Document.body.scrollHeight));
  fZoomInt :=  r;  // 기준 100,   10 ~ 1000 범위
  pvaIn := fZoomInt;
//  WebBrowser1.ControlInterface.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, pvaIn, pvaOut);
  WebBrowser1.ExecWB(OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, pvaIn, pvaOut);
end;






/*  404에러 대비 */

url에 해당 파일이 없어 404 에러가 발생할 때 대비하여 onNavigateError 이벤트를 다음 처럼 하면 404에러 없이

빈 화면이 표시된다.


1
2
3
4
5
6
7
procedure TForm2.WebBrowser1NavigateError(ASender: TObject; const pDisp: IDispatch; const URL, Frame,
  StatusCode: OleVariant; var Cancel: WordBool);
begin
  WebBrowser1.Navigate('about:blank');
end;