喫茶XRAYトップページ

[▲前のスレッド]

[33] プリンタや用紙設定変更した後、TplTacPrev への反映のタイミング返信 削除
2004/11/15 (月) 17:52:35 みねま
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 にうまく伝えるには
どうしたらよいでしょうか?




[34] Re:プリンタや用紙設定変更した後、TplTacPrev への反映のタイミング返信 削除
2004/11/15 (月) 22:43:13 Mr.XRAY
▼ みねまさん,はじめまして.

拙作コンポのご利用ありがとうございます.レスが遅くなりまして
すみません.
お訪ねの件ですが,これから調査いたします.しばらくお待ち下さい.


[35] Re:プリンタや用紙設定変更した後、TplTacPrev への反映のタイミング返信 削除
2004/11/15 (月) 23:06:51 Mr.XRAY
▼ みねまさん,こんちには.

とりあえず,以下の様にして逃げてみて下さい

OnBeforePageDrawまたは,OnFormShowイベント内で,

TacPrev_CustList.LabelWidth := 2600;

のコードを書きます.当分これでお願いします.みねまさんの書き方の
方がわかりやすいのですが,修正にはちょっと時間がかかりそうなので.
申し訳ありませんが.
(AC_ListPreviewExecute内の同コードは削除します)

[36] Re2:プリンタや用紙設定変更した後、TplTacPrev への反映のタイミング返信 削除
2004/11/16 (火) 00:50:29 みねま
▼ Mr.XRAYさん こんばんは
みねまです。

早速お返事していただきありがとうございます。
> ▼ みねまさん,こんちには.
>
> とりあえず,以下の様にして逃げてみて下さい
>
> OnBeforePageDrawまたは,OnFormShowイベント内で,


OnBeforePageDraw で設定するとうまくいきました。
ありがとうございます。
気付くべきでした、、まだまだです。

TplCustomPrev の SetPaperInfo メソッドを pubric に持ち上げて
プリンタ設定後に呼び出そうかな、とも思っていたのですが、
TplPrev 系のコンセプトからすると、それはまずいかな、と思いまして
尋ねたしだいです。

> のコードを書きます.当分これでお願いします.みねまさんの書き方の
> 方がわかりやすいのですが,修正にはちょっと時間がかかりそうなので.
> 申し訳ありませんが.


いえいえ、目的が達成できればいいので。

本当に Tplシリーズにはお世話になっています。
いつかお返しが出来るといいのですが、、、。

ありがとうございました。


[38] Re3:プリンタや用紙設定変更した後、TplTacPrev への反映のタイミング返信 削除
2004/11/16 (火) 10:25:08 Mr.XRAY
▼ みねまさん

> TplCustomPrev の SetPaperInfo メソッドを pubric に持ち上げて
> プリンタ設定後に呼び出そうかな、とも思っていたのですが、
> TplPrev 系のコンセプトからすると、それはまずいかな、と思いまして


全然まずくないです.ただ,元のコードを修正すると,バージョンアップ
の時に面倒かも知れません.まったく自分専用のコンポにして直して使用
するというのであれば別ですが.
もし,protected部にアクセスしたのであれば,姑息な手ですが.

TTempTackPrev=class(TplTackPrev);
等と定義しておいて,

TempTackPrev(plTackPrev1).XXXXX:=XXX;
//XXXXはTplTackPrevのprotected部のプロパティやメソッド

とすると便利かも知れません.

> いえいえ、目的が達成できればいいので。

なるべく早い時期にバグ修正しておきます.
それと,プレビューの画面(特にボタン類)のデザインが,お世辞にも
いいとはいえませんので,適当にデザインして使用して下さい.(^_^);


[41] Re3:プリンタや用紙設定変更した後、TplTacPrev への反映のタイミング返信 削除
2004/11/16 (火) 17:51:36 Mr.XRAY
▼ みねまさん

> いつかお返しが出来るといいのですが、、、。

この掲示板で,今回のようにバグ報告することが十分お返しになって
いると思いますです.


[43] TplTackPrev の修正版UPしました.返信 削除
2004/11/17 (水) 00:12:19 Mr.XRAY
▼ みねまさんはじめ,ご利用の方々へ

> TacPrev_CustList.LabelWidth := 2600; が変更されません。

ご迷惑をおかけしました.先程修正版をUPしました.m(_ _)m
バージョン番号は,4.16となっています.よろしく.

忘れていました.印刷プレビューTplPrevもUPしていますので,お
手数ですが,こちらも新しいバージョン4.52にして下さい.追加
のイベントがありますので.


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