WebBrowserを印刷するには?

解決


みゆ  2002-08-12 22:58:05  No: 1257

Delphi6を使っています。まだまだかなりの初心者です。
WebBrowserをForm1に貼り付け、Form2を印刷確認画面にしました。
そこで、Form2のCommandButtonを押すと、
WebBrowser(の画面?)を印刷するようにしたいのですが、
うまくいきません。どなたかコードを教えて下さい<(_  _)>


にしの  2002-08-13 08:10:06  No: 1258

やり方の前に、先に進言しておきます。
WebBrowserを利用するには、OLEの知識が必要となる場合があります。
単純に、WebBrowser.Navigateで表示し、何らかのアクションでForm2を表示、Form2のCommandButtonを押すと印刷。だけでしたら、今回の質問だけでうまく行くと思います。
例えば、Form2でプリンタの設定をして、A4かB5か、縦か横か、などの情報も含めて設定するとなると、質問だけでは難しくなります。
Delphian World(http://home1.infonia.ne.jp/~delphian/delphi/)に、TUIWebBrowserというコンポーネントがあります。これは、WebBrowserの「癖」を、できるだけ解消してくれるものです
確か、WebBrowserの代用として使用する程度ならば、フリーだったと思います。
この作者のホームページ(http://plaza21.mbn.or.jp/~takoyakusi/)には、TUIWebBrowser印刷用コンポーネントもあります

さて本題ですが、
procedure TForm2.CommandButtonClick(Sender: TObject);
var
  tmp:OleVariant;
begin
  Form1.WebBrowser.ExecWB(OLECMDID_PRINT,
    OLECMDEXECOPT_DONTPROMPTUSER ,
    tmp,
    tmp);
end;

こんな感じになります。
Form1のWebBrowserの、ExecWB関数を呼び出します。
引数に、
・印刷を示すOLECMDID_PRINT
・プロンプトを出さないことを示すOLECMDEXECOPT_DONTPROMPTUSER
・戻り値はいらないので次の2つは無意味な変数
を用意しています。

もし、IEデフォルトの印刷ダイアログが必要なら、
OLECMDEXECOPT_DONTPROMPTUSER
を、
OLECMDEXECOPT_DODEFAULT
に変更してください。


みゆ  2002-08-13 20:47:47  No: 1259

わざわざご丁寧にありがとうございました!
OLEって聞いたことあったんですけど、
詳しく知らないので、勉強してまいります('◇')ゞ
本当にありがとうございました。


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








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