Delphi 10.3.3 Cmt Edt での
FMX (FireMonkey) にて
印刷を行う直前、PrinterSetupDialog にて
プリンター名の切り替え・用紙サイズ・向きを
指定しますけれども、用紙サイズを変更しているのに
用紙サイズが変わってくれない場合があります。
2回目は、変ってくれたりします。
何なんでしょう、これ? 謎挙動です。
あと
印刷前に、解像度の指定を SelectDPI で行って
使用プリンターがそれに近い解像度の指定になってくれる
らしいので、そのあと再度、解像度を取得してそれを使う
みたいな事をしないといけないみたい。
解像度の指定の初期値(デフォルト値)というのはなくて
SelectDPI をしないと DPI=0 とかやってくれちゃって
印刷できなくなります。
SelectDPI で 600dpi を指定したとしても、そのプリンターが
300dpi までしか無ければ 300dpi となりますので
600dpi に指定したからといって 600dpiのまま計算をして
印刷させようとしてもおかしくなります。
VCLでプログラミングする際は、そんな処理にはならないし
プリンターの用紙サイズを変えたら直後にその通りになるので
VCL プログラミングとはかなりの違和感があります。
Printer.PageWidth、Printer.PageHeight で印刷領域サイズは
取得出来ますし、取りあえず何とか印刷は出来そうな感じです。
FMX (FireMonkey) にて
印刷を行う直前、PrinterSetupDialog にて
プリンター名の切り替え・用紙サイズ・向きを
指定しますけれども、用紙サイズを変更しているのに
用紙サイズが変わってくれない場合があります。
2回目は、変ってくれたりします。
何なんでしょう、これ? 謎挙動です。
あと
印刷前に、解像度の指定を SelectDPI で行って
使用プリンターがそれに近い解像度の指定になってくれる
らしいので、そのあと再度、解像度を取得してそれを使う
みたいな事をしないといけないみたい。
解像度の指定の初期値(デフォルト値)というのはなくて
SelectDPI をしないと DPI=0 とかやってくれちゃって
印刷できなくなります。
SelectDPI で 600dpi を指定したとしても、そのプリンターが
300dpi までしか無ければ 300dpi となりますので
600dpi に指定したからといって 600dpiのまま計算をして
印刷させようとしてもおかしくなります。
VCLでプログラミングする際は、そんな処理にはならないし
プリンターの用紙サイズを変えたら直後にその通りになるので
VCL プログラミングとはかなりの違和感があります。
Printer.PageWidth、Printer.PageHeight で印刷領域サイズは
取得出来ますし、取りあえず何とか印刷は出来そうな感じです。