喫茶XRAYトップページ

[スレッド全体
]

[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にある処理をコピーして使っています。

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