喫茶XRAYトップページ

[▲前のスレッド]

[1135] plTackPrev.PrintToPageへ「1」をセットしても全ページ印刷される返信 削除
2007/3/2 (金) 04:08:36 junro
マスター、皆さんこんばんは。

junro と申します。

環境
WindowsXP Pro SP2, Delphi7 Ent

plTackPrev を利用させていただいておりますが
アドバイスをいただきたい事があります。

プレビューが必要ない場合に、頁選択をさせるために
TPrintDialogで選択させてから印刷を行ったところ、

// 前略
  if PrintDialog1.Execute then
  begin
    // 情報獲得
    plSetPrinter1.PrinterName := Printer.Printers[Printer.PrinterIndex];
    plTackPrev1.PrintFromPage := PrintDialog1.FromPage;
    plTackPrev1.PrintToPage := PrintDialog1.ToPage;
    // 印刷
    plTackPrev1.Print;
  end;
// 後略

PrintDialog1.FromPage = 1
PrintDialog1.toPage = 1
の場合だと全件印刷されてしまいます。
1以外ならば指定した頁だけが印刷されます。

中をのぞいたところ、plPrev.pasのTCustomplPrev.SetPageCountで
PrintToPageを設定しているようなので、ここを直せば良いと
思うのですが、どうもよくわかりません(汗

APage の値が初期化されないまま利用されることがあるようなので
とりあえず下記のようにして使用していますが、他に影響は無いも
のでしょうか?

どなたかアドバイスをお願いいたします。

//=============================================================================
//  総頁数と印刷終了頁の設定
//  逐次表示方式で使用.先読方式では描画ルーチンの最後で決まる
//=============================================================================
procedure TCustomplPrev.SetPageCount(const Value: Integer);
var
     APage : Integer;
begin
     APage := 1; // ←ここを追加した
     if Value<=0 then exit;
     if FDrawType=dtCont then exit;
     if FPrintToPage<>1 then APage:=FPrintToPage;
     FPageCount   := Value;
     FPrintToPage := 1;
     if APage<>FPrintToPage then FPrintToPage:=APage;
end;


[1138] Re:plTackPrev.PrintToPageへ「1」をセットしても全ページ印刷される返信 削除
2007/3/2 (金) 20:43:45 Mr.XRAY
▼ junroさん

ご迷惑をおかけしています.
plTackPrevのLabelCountはいくつに設定しているのでしょうか.

詳しく調べないとハッキリしたことがわかりませんので,もしその修正で
上手く動作するのであれば,それでいって下さい.
動けば正義ということで....
スンマセン.よろしく.


[1144] Re2:plTackPrev.PrintToPageへ「1」をセットしても全ページ印刷される返信 削除
2007/3/3 (土) 18:40:12 junro
▼ Mr.XRAYさん
返信ありがとうございます。

> plTackPrevのLabelCountはいくつに設定しているのでしょうか.
情報が足りないですね。すいません。
DataSetを設定して、
LabelColCnt = 1
LabelRowCnt = 12
で一覧表として利用しています。
LabelCountは必要ないと思い設定はしていませんでした。

念の為、LabelCountを設定して試してみましたが、同じく全ページ印刷
されてしまいました。
ブレークポイントでその時のAPageの値を見てみると「1239652」という
数値となりそれがそのままFPrintToPageに代入されています。

APage := 1;を追加して、今の所、特に問題は無いようですので今回は
これで行くことにします。

実際の所、1頁目だけ印刷というのはほとんど無いと思うのですが
気づいてしまったからには直しておこうと・・・

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