jvPrintDialogEx(プリントダイアログボックス表示)

印刷時に印刷ダイアログをポップアップさせます。

[構文]
 
Function jvPrintDialogEx(ByVal jid As Long, ByVal prnCode As String, ByVal bufLen As Long, ByVal rval As String) As Long
 
C言語
int jvPrintDialogEx(int jid, char *prnCode, int bufLen, char *rval);
 
Java
int jvPrintDialogEx(int jid, StringBuffer prnCode, int bufLen, StringBuffer rval);
 
Delphi
Function jvPrintDialogEx(jid: Longint; prnCode: PAnsiChar; bufLen: Longint; rval: PAnsiChar): Longint;
   

設定項目

内容

jid

jvCreateで取得したジョブID

prnCode

プリンタ設定値

bufLen

出力値用バッファ(rval )のバッファ長

rval

出力値用バッファ

 
リターンコード
 

 

内容

 

0以上

出力値バッファサイズ不足(必要サイズが返る)

 

0

正常終了

JV_ERR_JOBID

-3

ジョブIDエラー

JV_ERR_PRINTSET_ALREADY_EXEC

-36

jvSetDevModeまたはjvPrintDialog実行済み

JV_ERR_PRINTDLG_CANCEL

-12

印刷ダイアログでキャンセル  

JV_ERR_CREATEDC

-13

デバイスコンテキスト作成エラー

JV_ERR_MEMORY

-4

メモリ関連エラー

   
[解説]
 
jvPrintDialogExを使う時は、jvCreateの出力先デバイスを「JV_PRINTER」にします。
jvPrintDialogExをコールすると、jvCreateのプリンタデバイスコンテキストは無視されます。
jvPrintDialogExをコールする場合には、jvSetDevModeはコールできません。
jvPrintDialogExは、jvCreateからjvStartDocまでの間に、1回のみコールできます。
プレビューコントロールから印刷する時に印刷ダイアログを表示する場合は、プレビューコントロールのPrintDialogメソッドを使います。
 
印刷ダイアログの初期値
prnCode は、印刷ダイアログの初期値を設定する時に使います。  
以下の項目をカンマ区切りで設定します。
 
1.指定可能な最小ページの値
2.指定可能な最大ページ の値
3.印刷開始ページの初期値
4.印刷終了ページの初期値
5.印刷部数
6.「部単位で印刷」チェックボックスの値(下記設定値参照)
7.「ページ指定」オプションボタンのフラグ(下記設定値参照)
 

定数

内容

JV_COLLATE_ON

1

「部単位で印刷」チェックボックスをチェックする

JV_COLLATE_OFF

0

「部単位で印刷」チェックボックスのチェックをはずす

 

定数

内容

JV_ALLOWSELECT_ON

1

「ページ指定」オプションボタンを使用可能にする

JV_ALLOWSELECT_OFF

0

「ページ指定」オプションボタンを使用不可にする

 
「1.指定可能な最小ページ」と「2.指定可能な最大ページ」の値に0を指定すると全ページ印刷となります。「7.ページ指定オプションボタン」のフラグに0を指定した時も全ページ印刷となります。全ページ印刷では、印刷ダイアログがポップアップした時に、印刷開始ページと印刷終了ページは使用できません。
 
「3.印刷開始ページの初期値」には「1.指定可能な最小ページ」の設定値より小さな値を指定できません。
「4.印刷終了ページの初期値」には「2.指定可能な最大ページ」の設定値より大きな値を指定できません。
 
「6.部単位で印刷チェックボックス」は、印刷部数が1の時には指定できません。
 
印刷ダイアログでユーザーが設定した値
bufLen と rval は、ユーザーが印刷ダイアログで設定した値を取得する時に使います。
bufLen には rval 用に確保したバッファサイズを指定します。
 
バッファサイズが不足した時には0以上の値が返り、設定値を取得できません。
jvPrintDialogExは1回しかコールできないため、バッファサイズ不足でエラーになった場合でも、再度コールすることはできません。バッファサイズは、余裕を持った領域を確保しておきます。
 
VisualBasic等でコーディングする時は、実行前にspace関数などでバッファを確保しておきます。
 
rval  には、以下の項目がカンマ区切りで返ります。
 
1.プリンタ名称
2.印刷開始ページの値 
3.印刷終了ページの値 
4.印刷部数
5.「部単位で印刷」チェックボックスの状態(下記設定値参照)
 

定数

内容

JV_COLLATE_ON

1

「部単位で印刷」チェックボックスがチェックされている

JV_COLLATE_OFF

0

「部単位で印刷」チェックボックスがチェックされていない

 
ユーザーが開始ページや終了ページを入力した時は、指定されたページを印刷するようにプログラミングします。ユーザーが全ページ印刷を選択した時は、「2.印刷開始ページの値」と「3.印刷終了ページの値」には 0 が返ります。0 が返った時は、全ページを印刷するようにプログラミングします。
 
「4.印刷部数」には、複数部数の印刷をサポートしているプリンタドライバとサポートしていないプリンタドライバでは返る値が異なります。プリンタドライバが複数部数の印刷をサポートしている場合には、レポートライブラリは、プリンタドライバに印刷部数を設定し、「4.印刷部数」に 1 を返します。プリンタドライバが複数部数の印刷をサポートしていない場合には、レポートライブラリは、「4.印刷部数」にユーザーが指定した値を返します。「4.印刷部数」に 2 以上の値が返った時は、プリンタドライバに複数部数印刷の機能がないことを示しているので、ユーザーが指定した回数分の印刷処理を記述し、アプリケーション側で複数部数の印刷に対応してください。
 
「5.部単位で印刷」がチェックされた時は、プリンタドライバが部単位印刷をサポートしていない場合のみ「JV_COLLATE_ON」を返します。チェックされなかった時や、プリンタドライバが部単位印刷をサポートしている時は「JV_COLLATE_OFF」を返します。 「JV_COLLATE_ON」が返った時は、部単位印刷の処理を記述し、アプリケーション側で部単位印刷に対応してください。
 
※部単位印刷をサポートしたプリンタドライバを使う時の注意
部単位印刷に対応したプリンタドライバで部単位印刷を行う時には、事前に、印刷するプリンタのプロパティ設定画面で「全ページ分のデータをスプールしてから印刷データをプリンタに送る」という項目を指定しておきます。この項目が指定されていないと、プリンタドライバが部単位印刷をサポートしていても部単位印刷はできません。
 
基本的なコーディング   
 
[コーディング例]
 
Dim minPage As Long
Dim maxPage As Long
Dim fromPage As Long
Dim toPage As Long
Dim copies As Long
Dim collate As Long
Dim pageset As Long
Dim prnCode As String
Dim rval As String
    
minPage = 1
maxPage = 3
fromPage = 1
toPage = 3
copies = 2
collate = JV_COLLATE_ON
pageset = JV_PAGESET_ON
    
prnCode = CStr(minPage) & "," & CStr(maxPage) & "," & CStr(fromPage) & "," + CStr(toPage) & "," & CStr(copies) & "," & CStr(collate) & "," & CStr(pageset)
 
rval = Space(100)
 
'プリンタダイアログボックスの表示
ret = jvPrintDialogEx(jid, prnCode, 100, rval)
If ret <> 0 Then
  MsgBox "jvPrintDialogEx Error " + CStr(ret)
End If