jvSetDevMode(プリンタドライバ設定)

印刷実行時にアプリケーション側で自動的にプリンタドライバのプロパティを設定します。

[構文]
 
Function jvSetDevMode(ByVal jid As Long, ByVal temporary As Long, ByVal prnName As String, ByVal devMode As String) As Long
 
C言語
int jvSetDevMode(int jid, int temporary, char *prnName, char *devMode);
 
JAVA
int jvSetDevMode(int jid, int temporary, String prnName, String devMode);
 
Delphi
Function jvSetDevMode(jid, temporary: Longint; prnName, devMode: PAnsiChar): Longint;
   

設定項目

内容

jid

jvCreateで取得したジョブID

temporary

プリンタドライバの設定条件(設定値参照)

prnName

プリンタドライバを設定するプリンタ名

devMode

プリンタドライバ情報またはドライバ設定ファイル名

 
リターンコード
 

 

内容

 

0

正常終了

JV_ERR_JOBID

-3

ジョブIDエラー

JV_ERR_PRINTSET_ALREADY_EXEC

-36

jvSetDevModeまたはjvPrintDialogEx実行済み

JV_ERR_PRINTERNAME

-10

プリンタ名称エラー

JV_ERR_PARAMETER

-2

パラメータエラー

JV_ERR_DRVSET

-11

プリンタドライバ設定エラー

JV_ERR_MEMORY

-4

メモリ関連エラー

JV_ERR_CREATEDC

-13

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

 
[設定値]
 
temporary には次の値を設定します。
 

内容

 0

永久設定

 1

一時設定

 
[解説]
 
jvSetDevModeは、jvCreateの出力先デバイスが「JV_PRINTER」「JV_RDF」」「JV_RDFSVC」の場合に有効です
prnName を設定しなかった場合には、jvCreateのプリンタデバイスコンテキストで指定されたプリンタが使われます。
 
devMode にプリンタドライバ設定ファイルを設定した場合には、ファイルの検索パスをjvSetStringで設定できます。
jvCreateの出力先デバイスが「JV_RDF」」や「JV_RDFSVC」の場合、プリンタドライバ設定ファイルは、RDF形式のデータの中に保存されます。
 
出力先が「JV_RDF」の場合には、設定したプリンタドライバ情報の値は、RDFデータの中に入ります。プレビューコントロールのPrintOutメソッドで印刷をすると、この設定値で印刷が行われ、プレビューコントロールのPrintDialogメソッドをコールすると、この設定値で初期設定された印刷ダイアログがポップアップします。RDFデータにプリンタドライバ情報の設定値が入っている場合、プレビューコントロールの印刷ダイアログで、ユーザーが用紙サイズや用紙方向を変更しても有効とならず、この設定値で印刷が行われます。プリンタや印刷枚数などの用紙サイズと用紙方向以外の項目は、印刷ダイアログで変更可能です。
 
用紙サイズや用紙方向の違う帳票を1つのRDFデータに混在させ、且つ、プレビューコントロールから一括で印刷を行う場合には、RDFデータを作成する時、各ページごとに、、jvSetDevModeで用紙サイズや用紙方向の情報を設定しておきます。
 
jvSetDevModeは、jvCreateからjvStartDocの間でコールします。
jvSetDevModeは、1つの印刷ジョブ(jvStartDocからjvEndDocまでの間)の中で複数回コールすることができます。jvSetDevModeを再コールする場合には、jvEndPageの後でコールします。jvSetDevModeが再びコールされると、前回の設定は無効になります。jvSetDevModeの再コールによって変更できるのは、用紙サイズと用紙方向のみで、プリンタや印刷枚数などの変更はできません。
 
本的なコーディング   
プリンタドライバ設定ファイルとは   
プリンタドライバ情報とは   
プリンタドライバ情報の取得方法   
 
[コーディング例]
 
用紙サイズや用紙方向を設定して印刷する
 
jid = jvCreate(JV_PRINTER, form1.hWnd, Printer.hDC, 0,0,0,"")
'プリンタドライバ情報を設定する
ret = jvSetDevMode(jid, 1, "EPSON PM-G860X", "1,9,,0,75,3")
ret = jvStartDoc(jid, "請求書","")
|
ret = jvEndPage(jid)
ret = jvEndDoc(jid)
ret = jvClose(jid)
 
用紙サイズや用紙方向を印刷の途中で変更する
 
jid = jvCreate(JV_PRINTER, form1.hWnd, Printer.hDC, 0,0,0,"")
ret = jvSetForm(jid, "c:\JiveReport\請求書.jfm", 1, "", 100, 0, 0)
'プリンタドライバ情報を設定する
ret = jvSetDevMode(jid, 1, "EPSON PM-G860X", "1,9")   'A4縦置きの設定
ret = jvStartDoc(jid, "請求書","")
|
ret = jvDrawForm(jid)  
ret = jvEndPage(jid)
ret = jvSetForm(jid, "c:\JiveReport\受領書.jfm", 1, "", 100, 0, 0)
ret = jvSetDevMode(jid, 1, "", "2,9")   'A4横置きの設定
|
ret = jvDrawForm(jid)
ret = jvEndPage(jid)
ret = jvEndDoc(jid)
ret = jvClose(jid)
   
用紙のサイズや方向の異なるRDFファイルを作成しプレビューコントロールで印刷する
 
jid = jvCreate(JV_RDF, form1.hWnd, Printer.hDC, 0,0,0,"C:\tmp\a.rdf")
ret = jvSetForm(jid, "c:\JiveReport\請求書.jfm", 1, "", 100, 0, 0)
'プリンタドライバ情報を設定する
ret = jvSetDevMode(jid, 1, "", "1,9")   'A4縦置きの設定
ret = jvStartDoc(jid, "請求書","")
|
ret = jvDrawForm(jid)  
ret = jvEndPage(jid)
ret = jvSetForm(jid, "c:\JiveReport\受領書.jfm", 1, "", 100, 0, 0)
ret = jvSetDevMode(jid, 1, "", "2,9")   'A4横置きの設定
|
ret = jvDrawForm(jid)
ret = jvEndPage(jid)
ret = jvEndDoc(jid)
ret = jvClose(jid)
 
JiveView.FileName = "C:\tmp\a.rdf"    'RDFファイル名の指定
JiveView.PrinterName = "EPSON"     '出力プリンタの指定
JiveView.Copies = 1                       '1部印刷する
JiveView.MinPage = 1                     '印刷開始ページを1にする
JiveView.MaxPage = JiveView.PageCount   '印刷終了ページを全ページ数の値にする
JiveView.PrintOut()