IEコンポーネントでTWebbrowserに縮小してHtml表示させるには?


Sir  2005-12-02 01:54:41  No: 18962

IEコンポーネントを使い、WEB Browserを作っています。
Sleipnirにあるようなズームの機能(HTML表示の拡大縮小(必要なのは縮小))をDelphi6 personalにて実現するにはどのような宣言や仕組みにすれば良いのでしょうか?
宜しくお願いします。


えーと  2005-12-02 11:00:57  No: 18963

Q: How can I save a web page to a bitmap?
http://members.shaw.ca/iedelphi/webbrowser.htm#advanced11


Sir  2005-12-08 23:45:16  No: 18964

webページをBitmapに変換して縮小拡大ではなく、Html自体の縮小表示をやりたいと思っています。
(縮小状態でwebページのリンクなども機能している状態)
要するに普通にHtmlを表示させる状態を全体的に小さくさせたいワケです。オペラの機能であるように。
その為の手法を宜しくお願い致します。


堕レス御免  2005-12-09 01:42:09  No: 18965

IE自体にズーム機能が無いのでIEコンポーネントを使う限り難しいのでは。


にしの  2005-12-09 01:45:11  No: 18966

少しおかしいかもしれませんがこんな感じでしょうか。
# スクロールバーまで大きくなってしまう・・・
MSHTML_TLBをusesに追加してください。
なければtlibimpなどで取り込んでください。

procedure Zoom(wb: TWebBrowser; Value: Integer);
var
  lngValue: LongInt;
  Doc: IHTMLDocument2;
  Body: IHTMLElement;
  objStyle: Variant;
begin
///
  Doc := wb.Document As IHTMLDocument2;
  Body := Doc.body As IHTMLElement;
  objStyle := Body.style;
  objStyle.zoom := Value;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  Zoom(WebBrowser1, TrackBar1.Position);
end;


Sir  2005-12-16 01:06:26  No: 18967

>>にしのさんソース例ありがとうございます。

現在、
  WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.75;  //0.75=75%のサイズ(数値を変えれば好きなサイズに変更可)
でブラウザの拡大と縮小が出来る事が分かりました。
その上で、Form1にあるEdit1に表示させたいwebページのURLを記入して、Form1にあるButtom1を押すと、Form2が開き、Form2にあるWebBrowser1がForm1のEdit1に記してあるURLのページを表示させると同時に縮小化させる、という動作をさせたいと思っています。

Webbrowser1にForm1のEdit1で指定したwebページを表示させるまでは問題無いのですが、いざ縮小化させる時、

        Form2.WebBrowser1.Navigate(Edit1.text);  //Form1Edit1のURLをwebbrowserへ
        Form2.Show;  //Form2を表示
        Form2.WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.75;  //Form2のWebbrowser表示の縮小処理

とするとデバッガ例外が発生してしまいます。

Form2の記述で、

procedure TForm2.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
      WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.75;
end;

という感じにすれば縮小化はされるんですが、表示された時すぐに縮小化したいのです。
エラーの原因もしくは、何か良い手は無いでしょうか?
よろしくお願いします。


にしの  2005-12-16 04:58:37  No: 18968

エラーの原因は、Documentがロードしきっていないうちに操作しているからです。
OnNavigateComplete2イベントで処理させればOKです。


にしの  2005-12-16 05:05:08  No: 18969

訂正です。
OnDocumentCompleteイベントで処理してください。
OnNavigateComplete2イベントだと早すぎました。


Sir  2005-12-16 06:44:34  No: 18970

お早い返信ありがとうございます。
OnDocumentCompleteイベント内で処理したらwebページ表示後すぐに縮小化されました。
でも、
WebBrowser1.OleObject.Document.Body.Style.Zoom := 0.75;
だけを処理させているせいか分かりませんが、エラーダイアログは以前出続けています。無視すれば他は何も問題無いのですが、やっぱりカッコ悪いですね。
何か足りない事があるんでしょうか?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加