喫茶XRAYトップページ

[スレッド全体
]

[3460] ワード・エクセル操作フォームの印刷機能返信 削除
2010/6/16 (水) 10:38:12 Mr.XRAY
エクセル(Microsoft Excel)とワード(Microsoft Word)は,
プリンタの情報を内部で独自に持っています.
そのため,DelphiのTPrinterオブジェクトでは制御できません.
(DEVMODE構造体を設定しても,エクセル内部の設定が使用されます)

エクセルの場合,詳細なプロパティを設定して印刷したい場合は,
エクセルのダイアログを表示して印刷してください.
参考コードは,以下にあります.

[エクセルの印刷ダイアログ]
http://mrxray.on.coocan.jp/Delphi/plExcelEx/T_PrintDialog.htm

//=============================================================================
//  [印刷]ボタンクリックでエクセルの印刷ダイアログを表示して印刷する方法
//
//  継承フォームの[印刷]ボタンクリックイベントで
//  (1)inherited; を無効にする
//     (継承元のエクセル操作フォームの印刷コードを無効にする)
//  (2)印刷ダイアログを表示するコードを書く
//
//  エクセルの印刷ダイアログ表示のコードは以下を参照
//  [エクセルの印刷ダイアログ]
//  http://mrxray.on.coocan.jp/Delphi/plExcelEx/T_PrintDialog.htm
//=============================================================================
procedure TplExcelFormEx2.btnPrintClick(Sender: TObject);
begin
//  inherited;

  エクセルの印刷ダイアログ表示のコード,あるいは印刷コードを書く
end;


あるいは,独自の印刷ダイアログを作成するの1つの方法かも知れません
VBAのヘルプを[印刷]で調べるといろいろでてきます.
例えば,印刷対象となっているシートを,倍率を指定して印刷するには,

  xlfExcelSheet.PageSetup.Zoom := 200; //200%の意味
 
でできます.


[3462] [印刷プレビュー]ボタン返信 削除
2010/6/16 (水) 15:44:35 Mr.XRAY
> エクセルの場合,詳細なプロパティを設定して印刷したい場合は,
> エクセルのダイアログを表示して印刷してください.


エクセルの印刷ダイアログを表示すると.
[印刷プレビュー]ボタンが表示されます.
エクセル操作フォームExでは,印刷プレビューを実行すると,
その後,本体の表示がおかしくなります.
この回避方法は,現在のところ残念ながらありません.

そこで,[印刷プレビュー]のボタンを使用不可にすることが考えられますが,
これも難しいです.
方法としては,

(1) 何らかの方法で,[印刷]ダイアログのハンドルを取得
(2) 何らかの方法で[印刷プレビュー]ボタンのID値を取得して
  そのハンドル値を取得し,以下のように使用不可に設定する
    http://mrxray.on.coocan.jp/Delphi/plSamples/016_PrinterSetupDialog.htm#01

(1)は,フック(WH_CALLWNDPROCRET)でないとできないかも知れません.

[3463] Re:[印刷プレビュー]ボタン返信 削除
2010/6/16 (水) 16:11:13 Mr.XRAY
> (1)は,フック(WH_CALLWNDPROCRET)でないとできないかも知れません.

エクセルやワードには,Delphiのように,各種ダイアログ表示時,
あるいは,閉じるときのイベントはありませんので.


[3464] エクセル操作フォームExの仕様の限界返信 削除
2010/6/16 (水) 18:32:55 Mr.XRAY
もし,Delphiの印刷ダイアログ以外のプロパティを設定するのでいれば,
自作の印刷ダイアログを作成し,その設定をエクセルのPrintメソッド
で設定する方がいいかも知れません.

当然,この場合もプリンタ固有の設定はできませんが.
エクセルまたはワード操作フォームExの仕様と解釈してください.

いや,もっと詳細な設定がしたい!!
のであれば,エクセル操作フォームExを使用しないで,
エクセルそのものを,Delphiのコードで制御するしかないでしょう.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82