喫茶XRAYトップページ

[スレッド全体
]

[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;

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




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