Delphi Programming / Object Pascal

[掲載 2009年05月12日] [更新 2013年11月26日] ワード操作フォームEx |
ワード操作フォームEx
文書の印刷 |
| 動作確認等 |
- |
wdfWordPrintOut(FirstPage,
LastPage,
ACopies,
CollateFlag,
HeaderFlg)
現在編集中の文書を、印刷ダイアログを表示しないで印刷します。
プリンタは wdfPrinterNo プロパティの値を使用します。 |
| 引数 |
型 |
説明 |
| FirstPage |
Integer |
印刷開始ページ番号
1 は先頭のページ |
| LastPage |
Integer |
印刷終了ページ番号
総ページ数よりも大きい場合は最終ぺージまで印刷 |
| ACopies |
Integer |
印刷部数 |
| CollateFlag |
Boolean |
部単位の印刷 |
| HeaderFlg |
Boolean |
ヘッダフッタ部を印刷するかのフラグ |
ワード操作フォームExの[印刷]ボタンでは Delphi の PrintDialog を表示するようになっています。
このダイアログではプリンタの [プロパティ] は設定できません。ワード印刷ダイアログでは設定が可能です。そのためのメソッドです。 |
[備考]
ワードやエクセルでは、プリンタはワード、エクセルが内部で制御、管理しています。 |
 |
図1
ワードの印刷ダイアログ |
//=============================================================================
// ワードの[印刷]ダイアログを表示して印刷
//=============================================================================
procedure TplWordFormEx2.btnPrintClick(Sender: TObject);
begin
//inherited; 元のボタンクリックの実行なので不要
//1番目のプリンタに設定
wdfPrinterNo := 1;
//ワードの印刷ダイアログを表示
wdfWordShowPrintDialog;
end;
| Dialog オブジェクトでワードの印刷ダイアログを表示 |
| ワードの印刷ダイアログは、Dialog オブジェクトの wdDialogFilePrint を使用して表示できます。 |
procedure TplWordFormEx2.Button2Click(Sender: TObject);
var
pIndex : OleVariant;
pTimeOut : OleVariant;
begin
pIndex := wdDialogFilePrint;
pTimeOut := 0;
try
wdfWordApp.Dialogs.Item(pIndex).Show(pTimeOut);
except
raise;
end;
end;
Dialog オブジェクトを OleVariant 型で扱えば、次のように、プロパティを設定してからダイアログを表示することもできます。
Printer プロパティは設定できませんが、[OK] ボタンでダイアログを閉じると選択したプリンタ名を取得できます。ワードの印刷で使用するプリンタ名は、wdfWordApp.ActivePrinter で設定できますが、この ActivePrinter は、システムの通常使用するプリンタも変更します。
そのため、ワード操作フォームEx では、通常使用するプリンタを内部で記録しておき、印刷終了後に元に戻すようにしています。 |
procedure TplWordFormEx2.Button3Click(Sender: TObject);
var
objDialog : OleVariant;
iRet : Integer;
begin
wdfSetFocusWord;
try
objDialog := wdfWordApp.Dialogs.Item(wdDialogFilePrint);
objDialog.Range := 3; //現在のページ
objDialog.From := 1; //印刷開始頁
objDialog.To := 3; //印刷終了頁
objDialog.Collate := 1; //部単位
objDialog.NumCopies := 5; //印刷部数
iRet := objDialog.Show;
except
raise;
end;
//[OK]で閉じると選択したプリンタ名が取得できる
if iRet = -1 then begin
Edit1.Text := VarToStr(objDialog.Printer);
end;
wdfSetFocusWord;
end;
|