3

このMicrosoft ナレッジ ベースの質問 (KB267240)の情報に従って、TWebBrowser から印刷するときにカスタム ヘッダーとフッターを実装しようとしています。ナレッジベースの記事は非常に役に立ち、長いコード例も含まれていますが、コード例は Delphi ではなく C++ で書かれているため、必要なデータ構造を自分で Delphi コードに変換する必要がありました。必要なコードの部分を正しく変換したかどうかについては、あまり自信がありません。

これはおそらくその記事の最も重要な部分です。ここでは、以下のコードのパラメーター vaIn に何が入るかを説明しています。

OLECMDID_PRINT 要素の OLECMDID 列挙を ExecWB メソッドと共に使用すると、VARIANT 引数 pvaIn を介して SAFEARRAY 構造体を渡すことにより、拡張印刷情報を指定できます。この SAFEARRAY データ型は、最大 5 つの項目を取ります。

1) A string (BSTR) that contains a custom header.
2) A string (BSTR) that contains a custom footer.
3) ...

私が書いたコードを実行すると、元のヘッダーとフッターは正常に削除されますが、新しいヘッダーとフッターの文字列に置き換えられません。 、または、ナレッジベースの記事が書かれた時点で最新の 4 ~ 6 の範囲のバージョンではない IE 9 を使用しているため、単に動作することを期待すべきではない場合。

var
  vaIn, vaOut: OleVariant;
begin
    vaIn := VarArrayCreate([0,1], varOleStr); 
    vaIn[0] := VarAsType('new header', VarOleStr); //header
    vaIn[1] := VarAsType('new footer', VarOleStr); //footer

    // Show print-preview dialog 
    WebBrowser1.ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW,
      OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
end;
4

1 に答える 1