喫茶XRAYトップページ

[▲前のスレッド]

[12610] Plprevで特殊サイズの用紙返信 削除
2019/3/5 (火) 14:06:41 Noel
いつも大変参考にさせて頂いております<(_ _)>。

 印刷プレビュー制御コンポーネントPlPrevで、A4の印刷とプレビューはできるようになりました。
大変ありがたく使わせて頂いております。ありがとうございます。

さて、タイトルの通り、特殊な用紙サイズのものに印刷&プレビューしたい場合は、どのようにするのでしょうか?
説明のページを読んでみたのですが、わかりませんでした( ;∀;)。
いろんなWebページを拝見すると、OS側でも設定がいりそうだと言うことがわかってきました・・・。
難しいですー。



[12612] Re:Plprevで特殊サイズの用紙返信 削除
2019/3/5 (火) 15:56:46 Mr.XRAY
> さて、タイトルの通り、特殊な用紙サイズのもの

特殊な用紙サイズというのは,
プリントサーバとかユーザ定義用紙でとか・・・ う〜ん.
プリンタ (つまりプリンタドライバ) にもユーザ定義用紙の設定がありますが,
機種によって機能というか仕様に違いがあるので結構面倒かも知れません.


[12613] Re2:Plprevで特殊サイズの用紙返信 削除
2019/3/5 (火) 17:34:04 Noel
やはり、なかなか難しいものなのですね・・・。
Mr.XRAY様でも難しいなら、私では無理ですねー( ;∀;)。


[12614] Re3:Plprevで特殊サイズの用紙返信 削除
2019/3/5 (火) 18:01:38 Mr.XRAY
こんなところを参考にするとか・・・

[ ユーザ定義用紙の作成と削除]
http://mrxray.on.coocan.jp/Delphi/plSetPrinter/M_SetUserPaper.htm

[プリントサーバのプロパティで任意サイズの用紙作成]
http://mrxray.on.coocan.jp/Delphi/plSetPrinter/B_FreeSizePaper.htm

[テストプログラム UserSizePaper]
http://mrxray.on.coocan.jp/Delphi/plSetPrinter/T_UserSizePaper.htm


[12615] Re4:Plprevで特殊サイズの用紙返信 削除
2019/3/5 (火) 18:47:25 Noel
▼ Mr.XRAYさん
> こんなところを参考にするとか・・・
>
> [ ユーザ定義用紙の作成と削除]
> http://mrxray.on.coocan.jp/Delphi/plSetPrinter/M_SetUserPaper.htm
>
> [プリントサーバのプロパティで任意サイズの用紙作成]
> http://mrxray.on.coocan.jp/Delphi/plSetPrinter/B_FreeSizePaper.htm
>
> [テストプログラム UserSizePaper]
> http://mrxray.on.coocan.jp/Delphi/plSetPrinter/T_UserSizePaper.htm


いつもご教授ありがとうございます。
プリンター関連は、さっぱりなので、先人の足跡をたどっております。

さて、用紙の追加については、なんとか手動で、プリントサーバーの設定から行えました。

で、いろいろとDelphi-MLの過去ログも読み漁っていたら、NKPrinterを使ってPaperNumberを取得する方法が書いてありました(Delphi-ML:47725からのスレッド)
それをもとに、コードを書いてみて、プレビューの大きさがそれっぽく変わっていることを確認できました。

以下コードですが、テストに使ったものを手打ちで書き込んでいるので、誤字などあるかもしれません。
Delphi環境が、ネットに繋がっていないもので・・・。
Button1をクリックして、ComboBox1で選択すると、用紙のPageNumberが表示されるので、その番号をSetPaperNumberにセットするといけるようです。

間違いがあれば、ご指摘くださいませ。


use NkPrinters;

procedure TForm1.Button1.Click(Sender:TObject);
var
   N: TNkPrinter;
begin
   N := TNkPrinter.Create;
   try
      ComboBox1.Clear;
      ComboBox1.Items.AddStrings(N.PaperSizeNames);
   finally
      N.Free
   end;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
var
   N : TNkPrinter;
   S1 : String;
begin
   N := TNkPrinter.Create;
   try
      S1 := ComboBox1.Items[ComboBox1.ItemIndex];
      ShowMessage(S1 + ' = ' + IntToStr(N.PaperSizeNumbers[ComboBox1.ItemIndex]));
   finally
      N.Free;
   end;
end;

procedure TForm1.Button2.Click(Sender: TObject);
begin
   // 今回のユーザー定義用紙サイズは102x216mm
   plPrev1.DesignedPaperSize(1020, 2160);   //適宜変更
   plPrev1.plSetPrinter.SetPaperNumber(146);  //適宜変更。ComboBox1で選択した時に表示される番号を入れる

   plPrev1.BeginDoc;
   plPrev1.EndDoc;
   plPrev1.ShowModal;
end;


[12616] Re5:Plprevで特殊サイズの用紙返信 削除
2019/3/5 (火) 19:46:51 Mr.XRAY
> 間違いがあれば、ご指摘くださいませ。

プログラムは,「勝てば官軍,動けば正義」です.ハイ.


[12617] Re6:Plprevで特殊サイズの用紙返信 削除
2019/3/6 (水) 16:34:35 Noel
▼ Mr.XRAYさん
> > 間違いがあれば、ご指摘くださいませ。
>
> プログラムは,「勝てば官軍,動けば正義」です.ハイ.


あ、NkPrinterは、生成&破棄する必要ないですね・・・。
寝ぼけてました・・・。


[12618] Re7:Plprevで特殊サイズの用紙返信 削除
2019/3/6 (水) 17:44:48 Mr.XRAY
> あ、NkPrinterは、生成&破棄する必要ないですね・・・。
> 寝ぼけてました・・・。


あっ,ホントに.
スミマセンね.全くチェックしていませんです.ハハハッ (← 笑ってごまかすな !!)


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