喫茶XRAYトップページ

[▲前のスレッド]

[4147] QuickReportでのプリンタ設定返信 削除
2011/1/7 (金) 21:48:40 小豚丸
XRAYさん、初めまして

もし御存知でしてら、ぜひご教授して頂きたいですが、
実はQuickReportでレポートを印刷していますが、どうも
プレビュー画面より、プリンタ設定画面を開いて、設定しても
出力トレイと、白黒指定等がうまく行かなくて、大変困っています。

QuickReportのバグと私が思っていますが、気づいたら、いくら設定
しても、QuickReportが印刷時に使用されるプリンタの設定は、
システム上のプリンタの設定のようでした。

XRAYさんのプリンタ設定コンポは一時的にシステムのプリンタ設定
を変更して、印刷後、設定を戻すことは可能でしょうか?

ご指導よろしくお願いいたします。

[4150] Re:QuickReportでのプリンタ設定返信 削除
2011/1/7 (金) 23:45:16 Mr.XRAY
▼ 小豚丸さん,こんにちは.

> XRAYさんのプリンタ設定コンポは一時的にシステムのプリンタ設定
> を変更して、印刷後、設定を戻すことは可能でしょうか?


できません(キッパリ!!)
QuickReportは,内部で独自のプリンタというか,用紙の設定を保持して
いて,それを実際に印刷する際に,プリンタに対して設定するので,
プリンタの設定をあらかじめ行う,拙作コンポではできません.

QuickReportは,たしか,印刷時に何かイベントであって,そこで設定
が多少はできた記憶がありますが,何分にもかなり昔のことなので...
でも,記憶によると,ネット上に何か情報があったと思います.
え〜と,何で検索すればいいかな?
QuickReport 用紙設定 いや,ちょっと待ってください.

かなり強引な方法ですが,
一時的に,通常使用するプリンタの設定を変えてしまう方法も
あるようです.最終手段ですね.
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00614.html

>出力トレイと、白黒指定等がうまく行かなくて、大変困っています。

設定関係にもよりますから,用紙サイズとかプリンタとがわかれば,
より正確な調査が可能でしょう.


[4152] Re2:QuickReportでのプリンタ設定返信 削除
2011/1/7 (金) 23:53:36 Mr.XRAY
> QuickReportは,内部で独自のプリンタというか,用紙の設定を保持して
> いて,それを実際に印刷する際に,プリンタに対して設定するので,
> プリンタの設定をあらかじめ行う,拙作コンポではできません.


内部で独自にTPrinterオブジェクト,インスタンスを作成しているので,
VCLのPrinterオブジェクトに印刷先や用紙設定などの指定をしても効果
がないということです.


[4153] Re2:QuickReportでのプリンタ設定返信 削除
2011/1/7 (金) 23:57:56 Mr.XRAY
> QuickReportは,たしか,印刷時に何かイベントであって,そこで設定

QuickRep.PrinterSettings... という感じのメソッドとか,
あるいは,イベント内で設定できるようなことはありませんか?
確認してみてくだい.
QuickReportをもっていれば確認できるんですけどね.
ないもんで.いや,貧乏だからではないですよ.


[4154] Re2:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 00:04:23 Mr.XRAY
> 設定関係にもよりますから,用紙サイズとかプリンタとがわかれば,
> より正確な調査が可能でしょう.


ひとまず,このあたりで検索してみてはいかがでしょう.
ただ,有効な情報が得られるとは限りませんので,あしからず.
http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/search.cgi

私も時間ができたら調べてみます.


[4155] Re2:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 00:04:33 Sara
▼ Mr.XRAYさん ▼ 小豚丸さん,こんばんは.

> > XRAYさんのプリンタ設定コンポは一時的にシステムのプリンタ設定
> > を変更して、印刷後、設定を戻すことは可能でしょうか?
>
> できません(キッパリ!!)


> 一時的に,通常使用するプリンタの設定を変えてしまう方法も
> あるようです.最終手段ですね.
> http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00614.html


014_Save_PrinterProperty の方法で現在の設定を保存して
通常使用するプリンターの設定を変更したのちに、
014_Save_PrinterProperty の方法で、設定を戻せば良いかと・・・

昔、QuickReportを使う必要にせまられて、これをやったような記憶が
かすかにあります・・・(^^;

最近印刷するときは、コードをガリガリ書いてますんで・・・(^^;

[4156] Re3:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 00:13:15 Mr.XRAY
▼ Saraさん

> 昔、QuickReportを使う必要にせまられて、これをやったような記憶が
> かすかにあります・・・(^^;


そうですか,Saraさんもそういうせこいことやったことあるんですか,
この方法使って,QuickReportの印刷制御やっている方いるみたいですね.


[4157] Re4:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 00:17:21 Sara
▼ Mr.XRAYさん こんばんは

> > 昔、QuickReportを使う必要にせまられて、これをやったような記憶が
> > かすかにあります・・・(^^;
>
> そうですか,Saraさんもそういうせこいことやったことあるんですか,

せ・せこいっすか?・・・(^^;

か、勝てば官軍っすよ<(`^´)>エッヘン (^^;

[4158] Re5:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 00:32:30 小豚丸
皆さんのご返信、どうもありがとうございます。

前は2週間も調べて色んな方法をやってみて、結局だめでした。

再度、ご提言にチャレンジしてみます。

ありがとうございます。

[4159] Re6:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 09:20:39 Sara
▼ 小豚丸さん こんにちは

> 再度、ご提言にチャレンジしてみます。

一番簡単な方法としては・・・
1.必要な設定を通常使うプリンターに直接する。(コントロールパネルから直接)
2.別プログラムを作って014_Save_PrinterProperty の方法で現在の設定を保存
3.通常使うプリンターの設定を元にもどす。(コントロールパネルから直接)

下準備としてここまでを行ってください。

で、実際に使いたいプログラムでは、
a.014_Save_PrinterProperty の方法で現在の設定を保存
b.上記2で保存した内容を014_Save_PrinterProperty の方法で復元
c.QuickReportで印刷
d.a.の設定を014_Save_PrinterProperty の方法で復元

でしょうか・・・これなら014_Save_PrinterProperty の方法だけで実現できます。
また、a.で一時ファイルを使いたくない場合は、ちょっとの変更でMemoryStream
に保存することもできます。


[4160] Re7:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 10:07:19 Sara
▼ 小豚丸さん こんにちは

> 一番簡単な方法としては・・・

実行環境があるところで、実際に行おうとしてみました・・・が
そもそも、通常使うプリンターの設定すら無視されますね・・・(^^;
これでは、設定を保存して復元しても意味ないですね・・・

昔はできたようなきがするんですが・・・QuickReportのバージョンかなぁ
むかしは、QuickReport2か3だった気がするけど・・・
すくなくとも、QuickReport4+Delphi2007では正常に動いてないです
今のところ・・・(^^;

ちょっと、調べてみます。(解決できないかもですが・・・)


[4161] Re8:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 10:21:34 Mr.XRAY
そういえば,私も「持っていない」ではなく「インストールしていない」
ですね.
こんなのを見つけました.参考になるでしょうか.

連続帳票の用紙サイズについて
http://delphi.arcadiangarden.com/delphilounge/webconv.dll/alltree?No=20744

QuickReportのバージョン等は不明ですね.


[4162] Re9:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 10:47:19 小豚丸
私もQuickReport4+Delphi2007でさんざんやってだめでした。

最新のQuickReport5はDelphi2010しか対応してないので、
Delphi2010への移行はまだ勉強不足でてきていません。

 
こちらの方は参考してやってみます。

> 連続帳票の用紙サイズについて
> http://delphi.arcadiangarden.com/delphilounge/webconv.dll/alltree?No=20744
>


[4163] Re10:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 11:15:00 Mr.XRAY
手差し印刷する
http://www.wwlnk.com/boheme/delphi/dbtips/css0380.htm

こんなのもありしたが,モノクロで印刷するという設定,カラーの設定が
QuickReportになければ,プリンタのプロパティ(システムのですね)を
変えるしかないですね.多分.


[4164] Re11:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 11:57:48 Mr.XRAY
> QuickReportになければ,プリンタのプロパティ(システムのですね)を
> 変えるしかないですね.多分.


あっ,ダメなんですね.失礼.

>実行環境があるところで、実際に行おうとしてみました・・・が
>そもそも、通常使うプリンターの設定すら無視されますね・・・(^^;
>これでは、設定を保存して復元しても意味ないですね・・・


ですらか.う〜ん.
つまり,余計な使い方はするな! ということなんでしょうか.


[4165] Re10:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 12:00:36 Sara
▼ 小豚丸さん

> 私もQuickReport4+Delphi2007でさんざんやってだめでした。
>
> 最新のQuickReport5はDelphi2010しか対応してないので、
> Delphi2010への移行はまだ勉強不足でてきていません。


なんだか、昔の記憶がまたちょっと蘇ってきましたが
そういえば、この設定ができなくてプリンタードライバーのコピーを
複数作成して(LP-9200(コピー1)とか)、それぞれのドライバーに
利用ポートなどを設定して通常使うプリンターごと切り替えて印刷を
していたかも・・・

現在こちらの環境では、トレイ1(裏紙)とトレイ2(白紙)にA4が入っていて
トレイ2を指定してもトレイ1から排出されるので(標準設定はトレイ2)この
方法でもだめな可能性大ですが・・・(用紙サイズが違えばあるいわ・・・)

やっぱり、ソースの無いコンポはあきらめて、コードでガリガリ書きましょうよ(笑い)
なれると、そんなに苦になりませんよ(^^;

罫線が必要ならExcelで作って
http://ht-deko.minim.ne.jp/junkbox.htmlにあるスプール変換ツールでMetaFile化して
プリンターに描画した後に文字列の描画をすればOK。(^^;


[4166] Re11:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 13:58:04 Mr.XRAY
質問の趣旨とは直接関係ないのですが,Delphi 6 ProにQuickReport3.0を入れて
テストしてみました.
ネットでよく質問がある,実行時にプリンタを指定するテストです.
Demoプログラムの以下の部分,つまり,Printの前で設定しました.

ネット上の質問者のコードとは違いますね.
以下のコードはQuickReport3.0のヘルプに書いてあったコードです.
皆さん,ヘルプは見ているのでしょうか.

procedure TfrmQR3Demo.btnPreviewClick(Sender: TObject);
begin
  // This code is more complicated than what you would
  // typically need to run a report.  Most of this code
  // is to handle the selection of the various types of
  // reports.
 
  // 中略

      else if sender = btnPrint then begin
        report.Printersettings.printerindex:=
                            printer.printers.Indexof('EPSON PM-760C ESC/P R');
        report.Page.PaperSize := A5;
        report.Page.Orientation := poLandscape;

        //上の4行が追加分
        report.print;
      end;
    end;
  end;
end;

それと,Bin装置は,
http://www.quickreport.co.uk/faqs.aspx
のどれかのドキュメントにありましたが,QR3.0時点では,

「outputbinプロパティのマニュアルページ(5〜121)に記載されているビンを選択
デバイス固有のビンは、現時点ではサポートされていません」

ことなので,確認する必要がありますね.
確認用のプログラムは以下にあります.
http://mrxray.on.coocan.jp/Delphi/plSamples/012_PrintResolution.htm#04

これでBin番号が5-121にないビン装置であればサポートなしということですね.

>コードでガリガリ書きましょうよ(笑い)
>なれると、そんなに苦になりませんよ(^^;


ですね.これが一番,なんてね.


[4167] Re12:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 14:02:32 Mr.XRAY
> これでBin番号が5-121にないビン装置であればサポートなしということですね.

http://delphi.arcadiangarden.com/delphilounge/webconv.dll/alltree?No=20744


  //給紙トレイ
   (PInteger(@cQRBinTranslate[Upper]))^ := 290 ;  //印刷したいDC_BINSの値
    QuickRep1.PrinterSettings.OutputBin := Upper;
    QuickRep1.PrinterSettings.ApplySettings(QRPrinter);
    QuickRep1.PrinterSettings.PrinterIndex := Printer.PrinterIndex;
    QuickRep1.Print;

が使えるかも知れませんが.
これはテストしていません.
でも,少なくても,実行時,印刷時にサポート範囲内であればプリンタの
設定は可能であることが分かりました.

任意サイズの設定方法も
>http://www.quickreport.co.uk/faqs.aspx
>のどれかのドキュメントにありましたが,QR3.0時点では,


に書いてありました.たしか,quickreportfaq.docというドキュメント
だったと思います.
片っ端からダウンロードしてしまったので,何かどかに書いてあったのか
 ハハハッ.オバカですね.


[4168] Re13:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 14:11:17 Mr.XRAY
後,QuickReporでサポートしていない,プリンタ関係の設定ですが,
今回のようなモノクロ設定とか,もしかしたらできるかも知れません.

実行時に内部のプリンタオブジェクトを操作するサンプルもありました.
もう閉じてしまったので,後で確認してみます.

もちろん,全て英文です,
あっ,失礼しました.皆さんには英文であることは関係なかったですね (^^;


[4169] Re13:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 14:34:04 小豚丸
Mr.XRAYさん


QuickRep1.PrinterSettings.ColorOption := //白黒は1 カラーは2

をもやってみたが、全然反映されませんでした。

ですので、システムのプリンタの設定を一時に変更することが可能であれば、
それが一番の近道かもしれません。

QuickReportのコンポーネント(ソースも)を購入していますが、
力不足で解読することが......

とりあえず、Saraさん、Mr.XRAYさんもご協力ありがとうございます。

なにか方法がわかれば、ぜひ教えて頂きたいです。

これを解決しないと、たぶん私が解雇されます。

[4170] Re14:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 14:46:51 Mr.XRAY
▼ 小豚丸さん

> QuickRep1.PrinterSettings.ColorOption := //白黒は1 カラーは2

ColorOptionというのがあるのですか.
3.0にはないですね.
ところで,このコードはどこで実行しているのでしょうか.

> QuickReportのコンポーネント(ソースも)を購入していますが、

ソースがあるのは強みです.
QuickReportは,実際の印刷の時に初めてプリンタオブジェクトを生成
するはずなので(少なくても3.0までは),
プレビューは反映されない設定もあるハズです.
ソースがあれば確認できるんですが.

> これを解決しないと、たぶん私が解雇されます。

一時そういう経験もいいかも知れませんよ(冗談です!!)


[4171] Re15:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 14:54:00 Mr.XRAY
それと,確認ですが,Delphiのバージョン,QuickReportのバーション等の
情報ですね.


[4173] Re16:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 14:59:22 小豚丸
▼ Mr.XRAYさん
> それと,確認ですが,Delphiのバージョン,QuickReportのバーション等の
> 情報ですね.


Delphi2007、QuickReport 5.02
でした。


あと、BeforePrintイベントにも書いてみました。それもだめでした。

repform.QuickRep1.PrinterSettings.ColorOption := 1; //repForm.QuickRep1.UserPrinterSettings.ColorOption;

   repform.QuickRep1.PrinterSettings.OutputBin :=  repForm.QuickRep1.UserPrinterSettings.OutputBin;

[4174] Re17:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 16:08:35 Sara
▼ 小豚丸さん ▼ Mr.XRAYさん こんにちは

012_PrintResolutionにある
//  コンボボックスで選択したプリンタで使用可能なビン装置のリストを作成
を利用してBinの番号を調べる

その後、
      QuickRep1.PrinterSettings.CustomBinCode := 259;//上記で調べた番号
      QuickRep1.PrinterSettings.UseCustomBinCode := True;
      QuickRep1.Prepare;
      QuickRep1.Preview;

とすると、希望したトレイから印刷されました。

でも、
      QuickRep1.PrinterSettings.ColorOption := 1;
を間に挟んでも、色は変わりませんでした・・・(^^;

なので、
procedure TForm1.SetDefaultPrinter(Color : Integer);
var
  Device, Driver, Port: array[0..79] of char;
  DeviceMode: THandle;
  DevMode: PDeviceMode;
begin
  //プリンタ名、DEVMODE構造体を取得
  Printer.PrinterIndex := ComboBox1.ItemIndex;
  Printer.GetPrinter(Device, Driver, Port, DeviceMode);
  Printer.SetPrinter(Device, Driver, Port, 0);
  Printer.GetPrinter(Device, Driver, Port, DeviceMode);
  if DeviceMode = 0 then begin
    ShowMessage('Printer.GetPrinter エラー');
    Exit;
  end;

  DevMode := GlobalLock(DeviceMode);
  try
    //必要なら、ここで DevModeを修正する
    //↓ B5横 に設定する例
    with DevMode^ do begin
      dmColor := Color;//色指定
    end;
    SetDefaultUsePrinter(Device  {←これが「プリンタ名」です}
                        ,True    {「通常使うプリンタ」に設定する}
                        ,DevMode {DEVMODE構造体を設定する}
                        );
  finally
    GlobalUnlock(DeviceMode);
  end;
end;

を定義して、
その後、
      QuickRep1.PrinterSettings.CustomBinCode := 259;//上記で調べた番号
      QuickRep1.PrinterSettings.UseCustomBinCode := True;
      SetDefaultPrinter(1);
      QuickRep1.Prepare;
      QuickRep1.Preview;
      SetDefaultPrinter(2);
で色と、ビンの変更がうまくいくようです。


[4175] 一件落着かな返信 削除
2011/1/8 (土) 16:41:31 Mr.XRAY
▼ Saraさん,またやってくれましたね.
先日のフォルダ監視といい,今回といい.

> を定義して、
> その後、
>       QuickRep1.PrinterSettings.CustomBinCode := 259;//上記で調べた番号
>       QuickRep1.PrinterSettings.UseCustomBinCode := True;
>       SetDefaultPrinter(1);
>       QuickRep1.Prepare;
>       QuickRep1.Preview;
>       SetDefaultPrinter(2);
> で色と、ビンの変更がうまくいくようです。


しかし,Saraさんには参った.m(_ _)m

ネット上で結構QuickReportのプリンタ関係の設定の質問がありますが,
この[4174] 2011/1/8 (土) 16:08:35 でほとんどうまく行きそうですね.

Saraさんって,本当は,
Mr.XRAYのサイトの記事があぶなかしいので,監視にこられたのでしょうか.
今後のDelphiのことを杞憂して.

しかし,Saraさんといい,たてぐやさんといい,KSCさんといい,ホントに
バグやらとか見つけてくれますよね.


[4176] 一件落着かな返信 削除
2011/1/8 (土) 16:44:29 Mr.XRAY
> >       SetDefaultPrinter(1);

あっ,これ例のせこい方法ですね(笑)


[4178] Re:一件落着かな返信 削除
2011/1/8 (土) 17:02:34 Sara
▼ Mr.XRAYさん こんにちは

> Mr.XRAYのサイトの記事があぶなかしいので,監視にこられたのでしょうか.
> 今後のDelphiのことを杞憂して.


そんなわけありません(^^;

ここには、各種サンプルを拾いに来ています。(^^)V

今回のもネットでいくつか検索していくと、ここのサンプルに戻ってくるんですよね。
で、なんだ、これもここにあったのか・・・とか思いつつ スクラップ&ビルドを繰り返す。

まぁ、0から作る能力はあまりないんですけど、ある程度あるものを使って応用する
のは、昔から得意なんですよね・・・(^^;


> >       SetDefaultPrinter(1);
>あっ,これ例のせこい方法ですね(笑)

そうそう(^^)V

つきつめれば、もっとスマートな方法があるかもですが・・・
だれか判ったら、教えてください。

[4179] Re2:一件落着かな返信 削除
2011/1/8 (土) 17:33:40 Mr.XRAY
▼ Saraさん

> つきつめれば、もっとスマートな方法があるかもですが・・・
> だれか判ったら、教えてください。


いや,多分これ無いと思います.QuickReportが内部でオブジェクトを生成
している限り.つまり,本当は「せこい」方法ではないんですけどね.
ただ,QuickReportのバージョンアップに伴って変わるかも知れませんが.



[4177] Re18:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 16:51:17 Mr.XRAY
ColorOption以外でしたら,

  QuickRep1.Page.PaperSize := A5;

という感じで設定できるようです.印刷の場合.
このPage.の後にColorOptionというがないようです.
つまり,設定できなんですね.

>もし御存知でしてら、ぜひご教授して頂きたいですが、

なんて切り出しの質問だったのですが,実は「御存知」じゃないんですよね.
小豚丸さんのせいで,いやおかげでQuickReportの勉強しちゃいました.


[4180] Re18:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 18:04:23 小豚丸
▼ Saraさん

恥ずかしいですが、勉強不足で、下記の★のところでエラー(未定義識別子)
になるが、どう定義すればよろしいでしょうか?

> procedure TForm1.SetDefaultPrinter(Color : Integer);
> var
>   Device, Driver, Port: array[0..79] of char;
>   DeviceMode: THandle;
>   DevMode: PDeviceMode;
> begin
>   //プリンタ名、DEVMODE構造体を取得
>   Printer.PrinterIndex := ComboBox1.ItemIndex;
>   Printer.GetPrinter(Device, Driver, Port, DeviceMode);
>   Printer.SetPrinter(Device, Driver, Port, 0);
>   Printer.GetPrinter(Device, Driver, Port, DeviceMode);
>   if DeviceMode = 0 then begin
>     ShowMessage('Printer.GetPrinter エラー');
>     Exit;
>   end;
>
>   DevMode := GlobalLock(DeviceMode);
>   try
>     //必要なら、ここで DevModeを修正する
>     //↓ B5横 に設定する例
>     with DevMode^ do begin
>       dmColor := Color;//色指定
>     end;


>     ★SetDefaultUsePrinter(Device  {←これが「プリンタ名」です}
>                         ,True    {「通常使うプリンタ」に設定する}
>                         ,DevMode {DEVMODE構造体を設定する}
>                         );
>   finally
>     GlobalUnlock(DeviceMode);
>   end;
> end;
>




[4181] 関数やメソッドの作成方法返信 削除
2011/1/8 (土) 18:44:10 Mr.XRAY
▼ 小豚丸さん

> 恥ずかしいですが、勉強不足で、下記の★のところでエラー(未定義識別子)
> になるが、どう定義すればよろしいでしょうか?


えっと,これは,

> > procedure TForm1.SetDefaultPrinter(Color : Integer);

この行ではなくてですか?
いずれにしても,SetDefaultUsePrinterというのは,TForm1の関数,メソッドです.

procedure TForm1.SetDefaultPrinter(Color : Integer);

となっていますよね.SetDefaultPrinterの前に.(ドット)があります.
このドットの前はTForm1です.
つまり,SetDefaultPrinterはTForm1のメンバーです.
ということは,interface部にこの関数,メソッドの宣言がないとエラーになります.

public部でもprivate部もいいでから,この関数の宣言を書いてください.

http://mrxray.on.coocan.jp/Delphi/Others/A_IDETechnique.htm#02
ここには,HogeHogeというメソッドの例があります.


[4182] Re:関数やメソッドの作成方法返信 削除
2011/1/8 (土) 18:49:45 Mr.XRAY
▼ 小豚丸さん

それと,小豚丸さんは,PrintSetupでダイアログを表示して設定しているよう
ですが,提示のコードはプリンタの設定を確認できるコードです.

PrintSetupで設定した内容を,実際に設定するのは,私は確認していません.
とにもかくも,プリンタの設定が可能であることを確認することが必要です.
後はまた考えることにしましょう.


[4183] Re:関数やメソッドの作成方法返信 削除
2011/1/8 (土) 19:08:20 小豚丸
▼ Mr.XRAYさん


> いずれにしても,SetDefaultUsePrinterというのは,TForm1の関数,メソッドです.
>
> procedure TForm1.SetDefaultPrinter(Color : Integer);
>


すみません、気づきませんでしたが、関数の定義はわかりますか、
よく見ると、上記の2行の関数名は違います

SetDefaultUsePrinterの関数の内容は?
もしかすると012_PrintResolutionにありますか?

ちょっと見てみます。

[4184] Re2:関数やメソッドの作成方法返信 削除
2011/1/8 (土) 19:26:32 Mr.XRAY
▼ 小豚丸さん

> すみません、気づきませんでしたが、関数の定義はわかりますか、
> よく見ると、上記の2行の関数名は違います


ああっ,ゴメンなさい.私のポカです.
SetDefaultUsePrinterはこれです.[4150]で書いたものです.

http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00614.html


[4185] Re3:関数やメソッドの作成方法返信 削除
2011/1/8 (土) 20:04:19 小豚丸
関数を追加して、白黒の印刷ができました。

あとは、自分の書いているプログラムに整理して、使用できるように
工夫します。今は結構ごちゃごちゃな状態で......

理解できない部分はまた質問させていただきます。

大変参考になりました。

Mr.XRAYさん、 Saraさん
本当にどうもありがとうございました。

これで、職が続けられそうです。(泣...)



[4187] Re4:関数やメソッドの作成方法返信 削除
2011/1/8 (土) 20:49:30 Mr.XRAY
▼ 小豚丸さん

> これで、職が続けられそうです。(泣...)

そうですか.それは残念.いい経験になるかと思ったのですが(笑).
冗談はともかく,よかったです.
私も10年以上ぶりにQuickReportを,さわりだけですが操作してしまいました.


[4186] Re3:関数やメソッドの作成方法返信 削除
2011/1/8 (土) 20:07:58 Sara
▼ Mr.XRAYさん ▼ 小豚丸さん こんばんは

> > すみません、気づきませんでしたが、関数の定義はわかりますか、
> > よく見ると、上記の2行の関数名は違います
> ああっ,ゴメンなさい.私のポカです.
> SetDefaultUsePrinterはこれです.[4150]で書いたものです.
>
> http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00614.html


あぁ、ごめんなさい、端折りすぎでしたね・・・(^^;

上記URLにある処理をコピーして使っています。

[4172] Re15:QuickReportでのプリンタ設定返信 削除
2011/1/8 (土) 14:57:12 小豚丸
▼ Mr.XRAYさん

> > QuickRep1.PrinterSettings.ColorOption := //白黒は1 カラーは2
>
> ColorOptionというのがあるのですか.
> 3.0にはないですね.
> ところで,このコードはどこで実行しているのでしょうか.
>


ボタンクリック時のイベントに

with repform.QuickRep1 do begin
 
    //PrinterSetup;
    QRPrinter.PrintSetup;

    //QRPrinter.aPrinterSettings

    with PrinterSettings do begin
   // with QRPrinter.PrintSetup do begin

      //PrinterIndex := repform.QuickRep1.UserPrinterSettings.PrinterIndex;
     // PaperSize := Cumstom;
     // Orientation := poLandscape;
    //  Title := '報告書';

      ColorOption := repForm.QuickRep1.UserPrinterSettings.ColorOption;

      OutputBin :=  repForm.QuickRep1.UserPrinterSettings.OutputBin;

    end;

    Print;
end;

あともう一つ

with repform.QuickRep1 do begin
    PrinterSetup;
                                                                                             //白黒は1 カラーは2
    repForm.QuickRep1.PrinterSettings.ColorOption := repForm.QuickRep1.UserPrinterSettings.ColorOption;  //ColorOption;
                                                                     //下トレイ1はFirst=Upper  手差しはManual   自動の場合はAuto
    repForm.QuickRep1.PrinterSettings.OutputBin := repForm.QuickRep1.UserPrinterSettings.OutputBin;  //QRPrntr.TQRBin(DMBIN_MANUAL);

   // repForm.QuickRep1.PrinterSettings.ApplySettings;

    print;
end;

すみません、いろいろ試行錯誤に、コメントにしたりして、ごちゃごちゃに
なっています。




[4197] QuickReportでのプリンタ設定 まとめ返信 削除
2011/1/10 (月) 20:17:18 Mr.XRAY
QuickReportで,主に印刷の際のプリンタの設定に関することです.
ソースコードが手元にないので,提供サイトとヘルプ,今回のテスト結果
から判断できる内容です.

QuickReportでは,内部で印刷の際にプリンタオブジェクトを独自に作成
して設定する(印刷するまでは生成されない)

デフォルトでは,「通常使用するプリンタ」のデフォルト値が採用される
オブジェクト・インスペクタの

[Page]
[PrinterSettings]

プロパティで設定する.
例えば,[4166]のように,

  QuickRep1.Printersettings.printerindex:=
                            printer.printers.Indexof('EPSON PM-760C ESC/P R');
  QuickRep1.Page.PaperSize := A5;
  QuickRep1.Page.Orientation := poLandscape;


と,Pageプロパティで設定可能な値は設定が可能な.
もちろん,設定する値は,そのプリンタドライバがサポートしている場合に限る.
ドライバがサポートしていない値は無視され,デフォルト値が採用される.

ネット上ではよく
QuickRep1.PrinterSettings.PaperSize
というのを見かけるが,ヘルプでは上のようなサンプルコードとなっている

QuickReportが内部で持っていないプロパティ値の場合は,例えば[4174]のように,

  QuickRep1.PrinterSettings.CustomBinCode := 259;
  QuickRep1.PrinterSettings.UseCustomBinCode := True;
  QuickRep1.Prepare;
  QuickRep1.Preview;
 
CustomやUseCustom...を使用する.
もちろん,これも,そのプリンタドライバがサポートしている値に限る
それでも設定できない項目,PageやPrinterSettingsにない項目等は,
目的のプリンタを,[通常使用するプリンタ]に設定して,必要に応じてDEVMODE構造体
を設定してから,印刷する.印刷後,設定を元に戻す.この方法も[4174]参照

ということになるようです.
対象のプリンタドライバがサポートしている値等は以下で確認できる.
http://mrxray.on.coocan.jp/Delphi/plSamples/012_PrintResolution.htm


[4198] Re:QuickReportでのプリンタ設定 まとめ返信 削除
2011/1/10 (月) 20:44:46 Mr.XRAY
QuickReportでプリンタや用紙設定がうまく行かない現象を「バグ」と
表現している記事があるが,必ずしもそうともいえない気がします.

>QuickReportでは,内部で印刷の際にプリンタオブジェクトを独自に作成
>して設定する(印刷するまでは生成されない)


これは,プリンタドライバーがインストールされていない環境でも,帳票の
設計が可能です.
一方,拙作の印刷プレビューコンポは,プリンタ,用紙の設定を,プリンタ
ドライバーから取得するために,設計時にも実行時にもプリンタドライバが
必要です.
昔,プリンタドライバーがインストールされていない環境でエラーが発生
して困るというので,ない場合はA4縦でけで表示するようにはしました.

この設計時にプリンタドライバーがなくても設計が可能ということは,
プリンタや用紙の設定情報を内部でもつ必要があります.
これが,実際のプリンタドライバーの機能,仕様と一致させるというのが
1つの課題なんだと思います.
つまり,プリンタドライバーがもつ固有のプロパティは設定できないことに
なります.
「通常使用するプリンタ」にして設定するとしても,DEVMODE構造体で設定
可能な値に限られることになります.


[4207] Re:QuickReportでのプリンタ設定返信 削除
2011/1/11 (火) 22:39:37
▼ 小豚丸さん

こんにちは。
迷い込んで来ました・・・。

http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201010/10100015.txt

これの人?

解決できたのなら、ここに書き込んでもらえるとありがたいデスけど。

もしくは、このスレのリンク書き込んでいいですか?>Mr.XRAYさん


そしてこのスレの回答者の皆さんありがとうございいます。
私も解決できました。


[4208] Re2:QuickReportでのプリンタ設定返信 削除
2011/1/11 (火) 23:26:42 Mr.XRAY
▼ 龍さん,こんにちは.

> http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201010/10100015.txt

あら,こんなのがあったんですか.
これが小豚丸さんだったら,ちょっといけませんね.メッ!!
最近,たまには見にいくんですけど,あまり真面目に見ていないもんで.

> もしくは、このスレのリンク書き込んでいいですか?>Mr.XRAYさん

どうぞ.ご自由に.

[4223] Re3:QuickReportでのプリンタ設定(解決)返信 削除
2011/1/18 (火) 00:33:38 小豚丸
▼ Mr.XRAYさん

お世話になっています。

前回、いろいろアドバイスを頂いて、本当にありがとうございます。
自分のプロジェクトに適用するように、Mr.XRAYさんのPrintResolution
などを参考して、流用できるように関数などを改造しました。
お客さんの要望に沿えるのはちょっと大変でした。

16日の日曜にできたばかりで(ちょっと頭が悪いから...)
返事遅れて申し訳ありませんでした。


皆さんのご回答本当にありがとうございました。
これからもご指導、鞭撻のほど、よろしくお願いいたします。

[4226] Re4:QuickReportでのプリンタ設定(解決)返信 削除
2011/1/18 (火) 10:24:12 Mr.XRAY
QuickReportでの開発お疲れ様です.

> 皆さんのご回答本当にありがとうございました。
> これからもご指導、鞭撻のほど、よろしくお願いいたします。


ここは喫茶店ですから,堅苦しいのは必要ありませんよ.

Q and Aにも同じ様な質問があったみたいですね.
小豚丸さんと状況がほとんど同じみたいです.名前まで似ていますね (^^).
皆さん苦労されているようです.
やっぱり印刷コードは,ゴリゴリ自分でコードを書くのがいいですよー (^^;
http://hpcgi1.nifty.com/MADIA/DelphiBBS/wwwlng.cgi?print+201010/10100015.txt


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