- このトピックは空です。
-
投稿者投稿
-
2021年6月30日 10:05 AM #1013
前迎
ゲストDelphi5 で WR3 を使用しています
サンプルプログラム(Sample2)で印刷イメージを表示と
指定したプリンターで印刷がありますが
あれこれサンプルを修正して
指定したプリンターでイメージ表示後印刷を行いたいのですが
うまくいきません。通常使用するプリンターならイメージ後は印刷できるのですがwaxPrinter := form1.WR3AXCL1.CreatePrinterform1.cboPrinter.Text);
を指定しているのですがどうもうまくいきませんポイントを教えてください
2021年6月30日 10:05 AM #1014松嶋@ソフトウィング
ゲストお世話になっております。
>指定したプリンターでイメージ表示後印刷を行いたい
プログラムから指定したプリンターでしょうか?
CreatePrinterで指定する文字列は、プリンター名です。Win95等
ではプリンター設定Windows(プリンターの追加等を行う)で表示さ
れている名称となります。また、レポートに設定されているプリン
ターを使用する場合は、「CreateReportPrinter」をご使用くだ
さい。以上です。よろしくお願いいたします。
2021年6月30日 10:05 AM #1015前迎
ゲスト>プログラムから指定したプリンターでしょうか?
そうです
御社のサンプルプログラムで
ボタン式で
1.通常使うプリンターで印刷
2.印刷イメージを表示
3.指定したプリンターで印刷
とありますが
印刷イメージを表示そのイメージ画面から
指定したプリンターに印刷を行いたいのです
プリンター名はcboPrinter(EnabledをTrueにしました)を取得するようにしました。waxPrinter := form1.WR3AXCL1.CreatePrinterform1.cboPrinter.Text);
がうまく反映されていないようです
もしくは指定している場所が間違っているんでしょうかちなみに OSはNT4です
2021年6月30日 10:06 AM #1016松嶋@ソフトウィング
ゲストお世話になります。
CreatePrinterのパラメータとして、直接プリンター名を指定した
場合はいかがでしょうか?例)
EPSON LP-8300※ローカルプリンターの場合です。
以上です。よろしくお願いいたします。
2021年6月30日 10:06 AM #1017前迎
ゲストサンプルの87行目に直接記述してみましたがうまくいきません。
ちなみに 通常使うプリンターは 他のプリンターになっています。 LP-8200 を通常にした場合は問題なく印刷されます
プリンターはローカルプリンターですtry
{‘●プレビューオブジェクトの設定}
If nPrintMode = PRTMODE_PREVIEW Then begin
//以下の1行を追加
waxPrinter := form1.WR3AXCL1.CreatePrinter(‘EPSON LP-8200’);
{‘プレビューオブジェクトを作成します}
prwaxPreview := form1.WR3AXCL1.CreatePreview;
With prwaxPreview do begin
{‘プレビューモードを設定します}
PreviewMode := wrPREVDSPMODE_SINGLE;
{‘プレビューのタイトルを設定します}>※ローカルプリンターの場合です。
ネットワークプリンターの場合は特別な処理が必要なのでしょうか?プリンター名がserver\\prn1の場合同じように記述にすればそのまま出力は可能ですか
2021年6月30日 10:06 AM #1018松嶋@ソフトウィング
ゲストお世話になります。
正常に動作しない件了解いたしました。
ところで、お話が前後して申し訳ないのですが、CreatePrinter
でエラーは発生していないのでしょうか?正常に処理が終了して
印刷が正常に行えないと言うことなのでしょうか?大変申し訳有りませんが、よろしくお願いいたします。
2021年6月30日 10:06 AM #1019前迎
ゲスト>ところで、お話が前後して申し訳ないのですが、CreatePrinter
>でエラーは発生していないのでしょうか?正常に処理が終了して
>印刷が正常に行えないと言うことなのでしょうか?画面上は特にエラーは出ていません。
プリントがちゃんと出ないだけです。V2から御社のソフトを使用していますが大変重宝しています
今後ともよろしくお願い申し上げます2021年6月30日 10:06 AM #1020松嶋@ソフトウィング
ゲストお世話になります。
>プリントがちゃんと出ないだけです。
何らかの印刷は行われるのでしょうか?全く印刷されないのでしょ
うか?また、プログラム中で例外処理を行っている様に見受けられ
るのですが、(tryの部分)例外処理は行われていませんか?
v3.0(OCX)の場合は、WingReport側ではエラー表示は行われませ
んので注意してください。以上です。よろしくお願いいたします。
2021年6月30日 10:06 AM #1021前迎
ゲスト>何らかの印刷は行われるのでしょうか?全く印刷されないのでし>ょうか?
印刷は行われています 文字化けで出てきます
私の感じたところでは、プリンター指定をしても通常のプリンターで出力しているのではないかなと(CreatePrinterが機能していない)思っています。
あり得ないプリンターを指定した場合はエラーが出るので完全に機能していないわけでもなさそうですがそれともプレビューの処理段階で通常のプリンターに戻るような処理が内部的に行われているのか?
>また、プログラム中で例外処理を行っている様に見受けられるのですが、(tryの部分)例外処理は行われていません?
>v3.0(OCX)の場合は、WingReport側ではエラー表示は行われませ
>んので注意してください。プログラムのほとんどは(当方の1行以外は)
御社のサンプルプログラムで行っています
例外処理は行われていません(エラーは出ていません)
ソースから実行というように行っていますので例外が発生すればすぐにわかるはずです。
あり得ないプリンターを指定した場合はエラーが発生します。こちらの環境は NT4 SP6 +Delphi5(エンタープライズ版) です。
2021年6月30日 10:07 AM #1022松嶋@ソフトウィング
ゲストお世話になります。
エラーの発生は無く、CreatePrinterも正常に行われているとのこ
とですので、何故そのような現象となるのか分かりませんが、
「ShowDlg」メソッドを使用してプリンターを指定した場合の結果
はいかがでしょうか?以上、よろしくお願いいたします。
2021年6月30日 10:07 AM #1023前迎
ゲストサンプルプログラムはプレビューの段階で
プリンターを初期値に戻していることがわかりましたので(462行)
ここを入れ替えることによりうまくいきました
463行目に挿入
ShowDlgで確認しても問題なく切り替わっていました。ありがとうございました。
procedure TForm1.WR3AXCL1PreviewPrint(Sender: TObject;
const Preview: IWRPreview; StartPage, EndPage: Integer);var
waxPrinter:WRPrinter;
nPage:Integer;
bPrtOpen:Boolean;begin
bPrtOpen:=False;
try
{‘プリンターオブジェクトを作成します}
// waxPrinter := Form1.WR3AXCL1.CreatePrinter;
//以下を追加
waxPrinter := form1.WR3AXCL1.CreatePrinter(‘EPSON LP-8200’);
//チェック用
if waxPrinter.ShowDlg(form1.handle,wrPRTDLGITEM_DIS_CHANGEPAPER) then
Showmessage(‘OK’) else Showmessage(‘PrintCancel’);bPrtOpen:=True;
{‘プリンターをオープンします}
waxPrinter.OpenPrinter(Form1.Handle); -
投稿者投稿
- フォーラム「旧サポート掲示板」には新規投稿および返信を追加できません。