喫茶XRAYトップページ

[スレッド全体
]

[8573] 印刷プレビュー制御コンポーネントにて返信 削除
2015/3/12 (木) 11:10:55 Sara
マスターこんにちは。

現在マスター作の印刷プレビュー制御コンポーネントをありがたく利用させていただいている
ところですが、ProcNameを使って印刷をするとメモリリークするようです。

まぁ、私の使い方が間違っている可能性もあるわけですが・・・(^^;

印刷ボタン押下時の処理


   plPrev1.FormWindowState := fwMaximized;
    plPrev1.plSetPrinter.Orientation := poLandscape;
    plprev1.plSetPrinter.PaperNumber := DMPAPER_A4;
    plPrev1.BtnOptions := plPrev1.BtnOptions + [boPrinterSetBtn];
    plPrev1.ProcName := PrintProc;
    plPrev1.ShowModal;
    plPrev1.plSetPrinter.SaveToFile(PrtInfoName);


procedure PrintProc;
begin
   plPrev1.BeginDoc;
   try

     実際の印刷処理

   finally
      plPrev1.EndDoc;
   end;
end;


こんな感じで使っています。

ちなみに、BeginDocとEndDocを呼ばなければ、メモリリークしません。
改ページも正常におかなわれませんが・・・(^^;

ProcNameを使わずに直接PrintProcを呼ぶと正常に動作します。
プリンター設定ボタンが出てきませんが・・・(^^;


一応、ご報告まで・・・



[8581] Re:印刷プレビュー制御コンポーネントにて返信 削除
2015/3/13 (金) 18:00:32 おかぽん
▼ Saraさん

マスターではありませんが・・・

procedure TCustomplPrev.BeginDoc;

  FPrintFromPage := 1;             //印刷開始頁も1
  //以下の一行追加
  if (FCanvas <> nil) and (FCanvas is TMetafileCanvas) then FCanvas.Free;
  CreateMetaCanvas(True);          //メタキャンバスの作成
  ScaleInitialize(FCanvas, False); //キャンバスのスケーリング

とりあえず、これでメモリーリークなくなります。

ProcName を使ったときと使わないときの ShowModalのタイミングでしょうかね。

[8582] Re2:印刷プレビュー制御コンポーネントにて返信 削除
2015/3/13 (金) 19:54:19 Mr.XRAY
▼ おかぽんさん,ありがとうございます.

> ProcName を使ったときと使わないときの ShowModalのタイミングでしょうかね。


いや,これは完全にバグですね.
解放忘れですからね.
おかぽんさんって,やさしいんですね (涙)

コンポの修正は,ちょっと考えがあって,後日にします.
プリンタ設定コンポの指摘もありましたので,とりあえず,
ヒント・バグの方への記事としておきます.


[8584] Re3:印刷プレビュー制御コンポーネントにて返信 削除
2015/3/13 (金) 23:00:39 Sara
▼ Mr.XRAYさん
▼ おかぽんさん
 
> > ProcName を使ったときと使わないときの ShowModalのタイミングでしょうかね。
>
>
> いや,これは完全にバグですね.
> 解放忘れですからね.
> おかぽんさんって,やさしいんですね (涙)
>
> コンポの修正は,ちょっと考えがあって,後日にします.
> プリンタ設定コンポの指摘もありましたので,とりあえず,
> ヒント・バグの方への記事としておきます.


了解しました〜ありがとうございます。(^^)


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