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


Sir  2005-12-01 16:54:41  No: 18962  IP: 192.*.*.*

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

編集 削除
えーと  2005-12-02 02:00:57  No: 18963  IP: 192.*.*.*

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

編集 削除
Sir  2005-12-08 14:45:16  No: 18964  IP: 192.*.*.*

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

編集 削除
堕レス御免  2005-12-08 16:42:09  No: 18965  IP: 192.*.*.*

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

編集 削除
にしの  2005-12-08 16:45:11  No: 18966  IP: 192.*.*.*

少しおかしいかもしれませんがこんな感じでしょうか。
# スクロールバーまで大きくなってしまう・・・
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-15 16:06:26  No: 18967  IP: 192.*.*.*

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

現在、
  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-15 19:58:37  No: 18968  IP: 192.*.*.*

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

編集 削除
にしの  2005-12-15 20:05:08  No: 18969  IP: 192.*.*.*

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

編集 削除
Sir  2005-12-15 21:44:34  No: 18970  IP: 192.*.*.*

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

編集 削除