喫茶XRAYトップページ

[▲前のスレッド]

[3840] いまさら「plPrev」で質問があります!返信 削除
2010/10/21 (木) 21:18:00 KSC 〔HomePage
KSCです。

今更ながら「plPrev」で質問があります。
現在、「plPrev」「plSetPrinter」共に最新版でDelphi2007で利用させて頂き、
帳票デザインソフトを開発・使用しているのですが、

plPrev上に画像を描画し、その上にテキストを描画した際に
画面(プレビュー)上は、画像の上にテキストが表示(描画)されているのですが、
印刷するとテキストが消えてしまいます。

どのような状態かは、PDFファイルを圧縮して添付させて頂きます。

添付のPDFファイル内にも書きましたが、帳票イメージをPDF出力して
確認したらテキストは出力されているようですが消えてしまっている状態です。

テキストの描画順番は、イメージの描画の後に描画するようにデータを
生成しているのですが、
「PLPREVFRM.pas」上への描画順と印刷時に描画順が異なると言う事が
有るのでしょうか?

何かアドバイスをお願い致します。
■添付ファイル image.lzh

[3841] Re:いまさら「plPrev」で質問があります!返信 削除
2010/10/22 (金) 11:30:53 Mr.XRAY
▼ KSCさん

> 「PLPREVFRM.pas」上への描画順と印刷時に描画順が異なると言う事が

PDF見ました.確かに.
う〜ん.なぜなんでしょう,調べてみます.


[3842] Re2:いまさら「plPrev」で質問があります!返信 削除
2010/10/22 (金) 12:04:30 KSC 〔HomePage
KSCです。

> PDF見ました.確かに.
> う〜ん.なぜなんでしょう,調べてみます.


面倒な話ばかりを持ち込んですいません。

私の色々調べているのですが、その中で

function TCustomplPrev.GetMetaImage(Page: Integer): TMetaFile;

このソースの中で作成されたメタファイル「FMetaImage」を
SaveToFileで画像ファイルに保存すると、文字列は画像の上に
表示されていました。

GetMetaImageで生成されたメタファイルがPDFになるまでの間に
何かあるのでしょうか?

基本的には私のソースが悪いと疑ってはいるのですが...

宜しくお願い致します。


[3843] Re3:いまさら「plPrev」で質問があります!返信 削除
2010/10/22 (金) 12:35:19 Mr.XRAY
▼ KSCさん.どうもです.

今簡単なテストしてみました.
添付のテストプログラム06_BitMapTestで次のようにして実行して
PDFと,他のプリンタに出力したところでは,文字は上に印刷されています.

    case plPrev2.PageNumber of
    1:
    begin
      plPrev2.DrawPict       (500, 200,FileName);
      plPrev2.StretchDrawPict(500,1500,900,2300,True,FileName);
      plPrev2.RectLine       (500,1500,900,2300);

      plPrev2.FontSize (100);
      plPrev2.FontColor(clWhite);
      plPrev2.TextOut  (600, 1000, 'テスト');
    end;

> このソースの中で作成されたメタファイル「FMetaImage」を
> SaveToFileで画像ファイルに保存すると、文字列は画像の上に
> 表示されていました。


そうなんですよね.
基本的に全てメタファイルにして,それをプレビューして,
それをプリンタに出力していますから.
引き続き調査してみます.


[3863] 解決しました!私のミスです。返信 削除
2010/10/26 (火) 09:36:33 KSC 〔HomePage
KSCです。

Printメソッド内の
「GetMetaImage( i ) 〜 印刷開始」までの間で何かあると思い、
調べていて ... ... !

すいません。
私がソフト開発時に色々とデバッグ用に追加したソースの残骸が残っていました。
下記のマスターの「TCustomplPrev.Print」ソース内にテスト用で(A)部を
追加していた事を思い出しました。

procedure TCustomplPrev.Print;
var
    i        : Integer;
    FromPage : Integer;
    ToPage   : Integer;
begin
  ・
  ・
  ・
    try
      for i:=FromPage to ToPage do begin
        ScaleInitialize(Printer.Canvas,False);
        //逆方向(180度回転)印刷のプロパティInversePrintの処理
        if FInversePrint then begin
          Printer.Canvas.StretchDraw(Rect(FViewWidth,FViewHeight,0,0),GetMetaImage(i));
        end else begin
          Printer.Canvas.StretchDraw(Rect(0,0,FViewWidth,FViewHeight),GetMetaImage(i));
        end;

        Clipboard.Assign( GetMetaImage( i ) ); ← (A)

        Application.ProcessMessages;
        if Assigned(FOnPrint) then FOnPrint(Self,i);
        if i<ToPage           then Printer.NewPage;
      end;
    finally
  ・
  ・
  ・
end;

この行を削除したら正常に画像の上に文字表示されるようになりました。

でも、クリップボードにコピーすると、こんな不可解な現象が発生するんですね〜!


[3864] Re:解決しました!私のミスです。返信 削除
2010/10/26 (火) 14:45:11 Mr.XRAY
▼ KSCさん.どうもです.

問題が解決してよかったんですが.
これ,面白いというか,へぇー.と思ってしまいました.
こうことがあるんですね.

デバッグ用にコードを改変したのを忘れて動作がおかしいのに悩む
ことがありますが,これには...


[3865] Re2:解決しました!私のミスです。返信 削除
2010/10/26 (火) 16:59:07 taka
▼ Mr.XRAYさん
> ▼ KSCさん.どうもです.
>
> 問題が解決してよかったんですが.
> これ,面白いというか,へぇー.と思ってしまいました.
> こうことがあるんですね.
>
> デバッグ用にコードを改変したのを忘れて動作がおかしいのに悩む
> ことがありますが,これには...


確かヘルプのどこかに
プリンタを印刷するときは、
プリンタのキャンバス?かなにかをロックしなさいと書いてありましたよ

だから クリップボードに渡すと変なことに?

関係ないですけど
業務用のアプリケーションで 印刷でページが飛んだりするのはたぶんそのためです。


[3866] Re3:解決しました!私のミスです。返信 削除
2010/10/26 (火) 17:56:29 Mr.XRAY
▼ takaさん

> 確かヘルプのどこかに
> プリンタを印刷するときは、
> プリンタのキャンバス?かなにかをロックしなさいと書いてありましたよ


あっ,そう言えばありましたね.
すると,plPrevのバグ?
修正しないと...

しかし,こんなもん.何故気づかなかったんでしょう.
もう,こんな生活いや!!


[3867] Re4:解決しました!私のミスです。返信 削除
2010/10/26 (火) 18:02:01 KSC 〔HomePage
takaさん、マスター、どうもです!!

KSCです。

> 確かヘルプのどこかに
> プリンタを印刷するときは、
> プリンタのキャンバス?かなにかをロックしなさいと書いてありましたよ


そうなんですか〜。
すいません。勉強不足で...。
 
> あっ,そう言えばありましたね.
> すると,plPrevのバグ?
> 修正しないと...
> しかし,こんなもん.何故気づかなかったんでしょう.
> もう,こんな生活いや!!


やってはいけない事をやってしまいまして、
変なユーザーで申し訳ありません。

[3868] plPrevのバグ返信 削除
2010/10/26 (火) 19:06:38 Mr.XRAY
▼ KSCさん,どうもです.

> やってはいけない事をやってしまいまして、
> 変なユーザーで申し訳ありません。


「飛んでも八分(はっぷん),歩いて十分(じゅっぷん).
おサルのお穴はまっかっか」です.
(わかるかな〜? わかんねぇだろうな〜?) (笑)

バグを見つけてしまいましたね.
それだけ利用して頂いているというこですから嬉しいです.
そのうち修正しておきます.


[3869] Re:plPrevのバグ返信 削除
2010/10/26 (火) 19:15:36 KSC 〔HomePage
KSCです。

> 「飛んでも八分(はっぷん),歩いて十分(じゅっぷん).
> おサルのお穴はまっかっか」です.
> (わかるかな〜? わかんねぇだろうな〜?) (笑)


... ... ... うっ!?

> バグを見つけてしまいましたね.
> それだけ利用して頂いているというこですから嬉しいです.
> そのうち修正しておきます.


宜しくお願い致します。

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