Mr.XRAYさん、はじめまして
Tplシリーズ大変便利に利用させていただいてます。本当に便利ですね。
特にTplTacPrev の便利のよさにはほんとにビックリしました。
タックシールの印刷プログラムがあんなに簡単に出来るなんて、、、。
さて、TplTacPrev を利用していて、印刷前に用紙の設定を変更したものが、
反映されたりされなかったりする事があるので、どうすればいいのか教えて
いただきたいと思っています。
具体的には、
Form に TplTacPrev を二つ置いて、片方はA4横、もう一方はA4縦で
印刷しようとしています。(データセットは同じ)
用紙の切り替えは NKPrinter を利用しています。
plSetPrinter は利用せずに、デフォルトプリンターを利用するよう
にしています。
(#利用する場所によってプリンターが違うので通常使うプリンター
を利用するようにしています)
実際のコーディングは以下のようにしています。
procedure TForm_CustTacPrint.AC_ListPreviewExecute(Sender: TObject);
begin
NkPrinter.Orientation := nkOrLandScape;
NkPrinter.ApplySettings;
{ IDEでLabelWidthを設定できないので、ページ設定変更後設定しなおす }
TacPrev_CustList.LabelWidth := 2600;
TacPrev_CustList.Preview;
end;
この場合、NkPrinter.ApplySetting を終わった時点では
plTacPrev(TacPrev_CustList) の PageWidth が変更されていないので、
TacPrev_CustList.LabelWidth := 2600; が変更されません。
(PageWidth=1998になっていて、LabelWidth=1998に設定される)
ただし、2回目以降のPreview では、上記のコードでうまくいきます。
プリンタの用紙の変更があったことを TplTacPrev にうまく伝えるには
どうしたらよいでしょうか?
|