喫茶XRAYトップページ


[15] plTackPrintのPrintメソッドの動作返信 削除
2004/11/1 (月) 22:56:25 Mr.XRAY 〔HomePage
タックシール印刷コンポーネント(plTackPrint)について,以下の
質問メールがありました.

plTackPrintで,プレビューしないで直接印刷するメソッドPrintを実
行しても,1頁しか印刷しないというものです.コードは,

procedure TForm1.BitBtn8Click(Sender: TObject);
begin
  {.... 略 ...}
  DM.Query1.Open;

  plSetPrinter2.CallSetting;
  plTackPrint2.Execute;
 
  if plPrevForm18.PrintDialog1.Execute then
    plPrev2.Print;

end;

[16] Re:plTackPrintのPrintメソッドの動作返信 削除
2004/11/1 (月) 22:57:40 Mr.XRAY 〔HomePage
この件について以下の様にお答えしました.

  どうもうまく行きません.TplPrevを新しい形式にした際にか,
  または,元々問題があったのかも知れません.
 
申し訳ありませんが,以下の感じのコードで逃げて下さいませんか.
なるべく,速い時期に新しいTplPrevPrevの方に移行して頂けますよ
うお願い致します.

しかし,参りました.(苦笑)

type
    TTempPrev= class (TplTackPrint);

//====================================================================
//  Queryの結果を実行
//====================================================================
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
     Query1.Open;
     try
       plPrev1.Title:='表形式の印刷テスト';
       plTackPrint1.Execute;

       {頁数を取得}
       plPrev1.PageCount:=TTempPrev(plTackPrint1).GetPageCount;
       {PrintFromPageとPrintToPageは必要であればPrintDialogで設定}
       if PrintDialog1.Execute then begin
         plPrev1.PrintFromPage:=PrintDialog1.FromPage;
         {PrintToPageはplPrev1.PageCountより大きければ頁数分だけ印刷}
         plPrev1.PrintToPage:=PrintDialog1.ToPage;
         plPrev1.Print;
       end;
     finally
       Query1.Close;
     end;
end;

[追加・注]
このバグは,Printメソッド内で,印刷の総頁数が取得できないこと
によるものです.そこで,その対策として,最初に頁数を取得する
コードを追加しています.

[17] Re:plTackPrintのPrintメソッドの動作返信 削除
2004/11/1 (月) 23:08:17 Mr.XRAY 〔HomePage
>   if plPrevForm18.PrintDialog1.Execute then
>     plPrev2.Print;


このコードは使用できません.プレビューフォーム上のPrintDialog
は,プレビューフォームを表示している時にしか利用できません.
ご了承下さい.仕様です (^_^);


[18] Re2:plTackPrintのPrintメソッドの動作返信 削除
2004/11/1 (月) 23:47:25 yumapa
▼ Mr.XRAYさん こんにちはyumapaです。
早速、対応策まで頂きまして恐縮しております。
 
>なるべく,速い時期に新しいTplPrevPrevの方に移行して頂けますよ
>うお願い致します.


これは、TplTackPrevのことだと解釈していますが、因みに
TplTackPrevであれば、Printメソッドにて問題なく動作させる
ことは可能でしょうか?

>  if plPrevForm18.PrintDialog1.Execute then
>    plPrev2.Print;
> このコードは使用できません.プレビューフォーム上のPrintDialog
> は,プレビューフォームを表示している時にしか利用できません.


プリンターは印刷実行時に印刷ダイアログにて、選択できるように
したいので、このようなコーディングにしました。思ったとおり
動作したので(その代わり、Query結果は1件分しか印刷されません
でしたが(^^; )てっきり使用できると思っていました。
このような場合、何か真っ当な方法がありますでしょうか。
ご指導頂ければ、幸いですm(_ _)m

WinXP PRO , Delphi7 PRO

[19] Re3:plTackPrintのPrintメソッドの動作返信 削除
2004/11/1 (月) 23:52:28 Mr.XRAY 〔HomePage
▼ yumapaさん
> これは、TplTackPrevのことだと解釈していますが、因みに
> TplTackPrevであれば、Printメソッドにて問題なく動作させる
> ことは可能でしょうか?


ごめんなさい.TplTackPrevのことです.
yumapaさんの質問で再確認して,修正したVer4.13では問題ないこ
とを確認しました.すでにUPしてあります.

> このような場合、何か真っ当な方法がありますでしょうか。
> ご指導頂ければ、幸いですm(_ _)m


やはり,PrintDialogを別に配置したFormに[16]のコードを書いて
頂く方法しか考えつきませんでした.

ところで,掲示板に引っ張り出して申し訳ありません.
メールの方がレスポンスがいいのですが,情報の共有という意味で
ご理解下さい.通産DL数が数千の大台になっているため,実際に利用
されている方も,それなりにいらっしゃると思われます.
もしかしたら,その中には,同様の問題を抱えている方もいるのでは
ないかと思いますので.
ただし,掲示板の利用は強制ではありませんので.


[20] Re4:plTackPrintのPrintメソッドの動作返信 削除
2004/11/2 (火) 00:15:36 yumapa
▼ Mr.XRAYさん yumapaです。
早速のレスありがとうございます。

> yumapaさんの質問で再確認して,修正したVer4.13では問題ないこ
> とを確認しました.すでにUPしてあります.


TplTackPrevを使用した場合のPrintメソッドでも当然、印刷実行時に
印刷ダイアログでプリンターを選択するには、先程[16]でレス頂いた
様な方法を採るしかないですよね?

> やはり,PrintDialogを別に配置したFormに[16]のコードを書いて
> 頂く方法しか考えつきませんでした.


何分、いつまで経ってもプログラミングド素人で、お恥ずかしい
限りですが、後日(できるだけ早く)動作確認をさせて頂こうと
思います。
ありがとうございましたm(_ _)m


[21] Re5:plTackPrintのPrintメソッドの動作返信 削除
2004/11/2 (火) 00:29:46 Mr.XRAY 〔HomePage
▼ yumapaさん

> TplTackPrevを使用した場合のPrintメソッドでも当然、印刷実行時に
> 印刷・#95;イアログでプリンターを選択するには、先程[16]でレス頂いた
> 様な方法を採るしかないですよね?


です.印刷開始と,終了頁は指定します.TplTackPrevの方は,頁数の
取得は必要ありません.自動で取得します.
全頁印刷であれば,PrintメソッドだけでOkです.



INCM/CMT
Cyclamen v3.82