印刷プレビューで

解決


きつつき  2003-05-28 03:23:17  No: 3623  IP: [192.*.*.*]

はじめまして。

印刷プレビューコンポーネントTplPrev(http://homepage2.nifty.com/Mr_XRAY/Delphi/plPrev/index.htm)を使って印刷プレビューし、ページ番号を入れようとしてもうまくいきません。

以下ソースです。

////////////////////////
var
  Li,Line,i:Integer;
  PageStr:String;
begin
        plPrev.BeginDoc;
        plPrev.Canvas.Font:=CurrentEdit.Font;
        plPrev.Canvas.Font.Size:=CurrentEdit.Font.Size * 3;
        for Li:=1 to CurrentEdit.Lines.Count do
        begin
                plPrev.Canvas.TextOut(SpLeft,SpTop + ((CurrentEdit.Fontheight * 3 + (Gyokan - 5)) * Line),Memo1.Lines[Li]);
                Inc(Line);
                if (((CurrentEdit.Fontheight * 3 + (Gyokan - 5)) * Line) + SpTop + SpUnder + 100) >= (plPrev.PaperHeight) then
                begin
                        plPrev.NewPage;
                        Line:=0;
                        plPrev.Canvas.Font:=CurrentEdit.Font;
                        plPrev.Canvas.Font.Size:=CurrentEdit.Font.Size * 3;
                end;
        end;
        if Page=True then for i:=1 to plPrev.PageCount do
        begin
                plPrev.PageNumber:=i;
                PageStr:=IntToStr(i) + '/' + IntToStr(plPrev.PageCount);
                plPrev.Canvas.Font.Name:='MS Pゴシック';
                plPrev.Canvas.Font.Size:=30;
                plPrev.Canvas.Font.Style:=[fsBold];
                {if Ici='左上' then plPrev.TextOutLT(SpLeft,SpTop - 25,PageStr);
                if Ici='上' then plPrev.TextOutCT(plPrev.PaperWidth div 2,SpTop - 25,PageStr);
                if Ici='右上' then plPrev.TextOutRT(plPrev.PaperWidth - SpLeft,SpTop - 25,PageStr);
                if Ici='左下' then plPrev.TextOutLB(SpLeft,plPrev.PaperHeight - SpUnder,PageStr);}
                if Ici='下' then plPrev.TextOutCB(plPrev.PaperWidth div 2,plPrev.PaperHeight - SpUnder,PageStr);
                {if Ici='右下' then plPrev.TextOutRB(plPrev.PaperWidth - SpLeft,plPrev.PaperHeight - SpUnder,PageStr);}
        end;
        plPrev.Title:='プレビュー';
        plPrev.EndDoc;
        plPrev.ShowModal;
end;

//////////////////////////////////////////

CurrentEditと、Memo1は別ですが、Memo1にCurrentEditの内容を入れてます。
if 文のところはあまり気にしないでください。
spLeft,spTop,spUnder,GyokanはIntegerです。

やってみると、うまく表示されません。
なぜでしょうか。
よろしくお願いします。

編集    削除
にしの  2003-05-28 07:21:27  No: 3624  IP: [192.*.*.*]

このコードはどこに書いてあるんでしょうか。
サイトを見る限りでは、TplPrevコンポーネントの、OnBeforeViewイベントでページを振るように書かれていますが。
# コンポーネントをインストールしていないので未確認です

まず、サイトのサンプルでページ番号が振られるか試してみてください。

編集    削除
きつつき  2003-05-29 03:46:39  No: 3625  IP: [192.*.*.*]

にしのさま、ありがとうございます。

OnBeforeViewイベントに書いていませんでした…
やっぱりヘルプ見てやったほうが良いですね。

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

編集    削除
にしの  2003-05-29 05:42:17  No: 3626  IP: [192.*.*.*]

掲示板に書く前に、少なくともヘルプは見るべきでしょう。
次があるとしたら、もう少しご自身で調べて、それでもわからないときにすべきです。

編集    削除
理恵  2003-09-09 18:42:35  No: 3627  IP: [192.*.*.*]

印刷プレビューコンポーネントTplPrevwを
Delphi7で使用できるのでしょうか??
インストスしようとすると、パスが違うため開けないようで、
”設定された、ファイルが見つかりません”
と表示されてしまいます。。
どなたかご教授お願いします。。

編集    削除
Jボス  2003-09-09 20:54:57  No: 3628  IP: [192.*.*.*]

単純にPLPREVFRMのパスが環境に合っていないのでは、と思うのですが(usesの)?
それとも、もっと複雑な事象なのでしょうか?

編集    削除
Mr.XRAY  2003-09-09 21:58:01  No: 3629  IP: [192.*.*.*]

にしのさん,サポートありがとうごさいます.
多分,uses部のことでしょう.
現在Delphi7には対応していません.ただし,Uses部の修正だけで使用できま
す.

編集    削除
Mr.XRAY  2003-09-10 04:12:37  No: 3630  IP: [192.*.*.*]

それとJボスさんもサポートありがとうごさいます.作者です.

理恵さんへ,
個別の(Delphi標準でない)コンポーネント関係は,ちょっとここでは
マズイような気がします(普及しているLight Reportなどは除いて).
Delphian Worldに登録してあるものならば,

http://www.egroups.co.jp/group/delphian

に参加して質問するか,作者へ直接の方がいいと思われます.
実は私が作者ですので,いつでも遠慮なく質問メールでどうぞ.
(私のサイトには掲示板はありません)

編集    削除
理恵  2003-09-10 17:22:49  No: 3631  IP: [192.*.*.*]

Uses節をどのように変更すればいいのでしょうか??
Delphiは初心者のもので、いろいろ試してみたのですがわかりません。。。
どなたか、ご教授お願いします。。

編集    削除
Jボス  2003-09-10 18:08:52  No: 3632  IP: [192.*.*.*]

現在どうなっているのかがわからないのですが
変更する可能性があるとすると以下だと思います
uses節の中です

PLPREVFRM in '(ここを変更します)c:\src.....'

開きたいファイルのパスです。

編集    削除
理恵  2003-09-10 21:48:43  No: 3633  IP: [192.*.*.*]

USE節の中身をコピーしてみました。。
uses
  {$IFDEF VER140}
  Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms,Dialogs,
  ComCtrls, ExtCtrls, StdCtrls, Printers,Math,ToolWin,plSetPrinter,
  JPEG,Clipbrd, Buttons, Menus,plPrev,Variants;
  {$ELSE}
  Windows, Messages, SysUtils, Classes, Graphics, Controls,Forms,Dialogs,
  ComCtrls, ExtCtrls, StdCtrls, Printers,Math,ToolWin,plSetPrinter,
  JPEG,Clipbrd, Buttons, Menus,plPrev;
  {$ENDIF}
こんな感じです。。

インストールを実行すると、
[致命的エラー] PLPREVFRM.pas(21): ファイル 'plSetPrinter.dcu' が見つかりません
と、表示されてします。。

編集    削除
Jボス  2003-09-10 22:16:56  No: 3634  IP: [192.*.*.*]

(カンマ),で区切っていれてやればパスは設定できますが、↓
..aphics, Controls,Forms,PLPREVFRM in '(ここを変更します)c:\src.....',Da
ファイル 'plSetPrinter.dcu' につきましては、勉強不足のためわかりかねます。すみません。

編集    削除
にしの  2003-09-10 22:20:19  No: 3635  IP: [192.*.*.*]

uses節に、plSetPrinterが含まれていますよね。
このplSetPrinterは、plSetPrinter.dcuか、plSetPrinter.pasという名前で、どこかにあるはずです。
どこにもなければ、そのエラーを回避することはできません。

plSetPrinter.dcuかplSetPrinter.pasがあるという前提でお話しします。

Delphiは、必要なファイルを、ある特定の場所からしか探しません。
PCのどこかにあればよい、というわけではないのです。
まず、エクスプローラの「ファイルの検索」機能を使って、plSetPrinter.*を検索してください。
plSetPrinter.dcuかplSetPrinter.pasが見つかったら(たいていは同じ場所ですが)、plSetPrinter.pasのある場所を覚えてください。もちろんコピー&ペーストでよいですから。

Delphiを立ち上げ、メニューバーの「ツール」-「環境オプション」を選びます。
ライブラリというタブがあるので、それをクリックすると、
「ライブラリパス」
とかかれた項目があると思います。
ここにある"..."というボタンを押し、plSetPrinter.pasがあったディレクトリ名(フォルダ名)を、ここに追加します。

編集    削除
理恵  2003-09-10 22:37:16  No: 3636  IP: [192.*.*.*]

今度は
[エラー] plPrev.pas(369): 未定義の識別子 : 'null'
と、表示されてしまうのですが。。。
たびたび、申し訳ありません。。

編集    削除
Mr.XRAY  2003-09-10 22:39:41  No: 3637  IP: [192.*.*.*]

う〜む.
これは一度plSetPrinter,つまりプリンタ設定コンポーネントのテスト
プログラムが正常に実行できるか確認した方がいいかもしれません.

http://homepage2.nifty.com/Mr_XRAY/Delphi/plPrev/plPrev.htm
の必要コンポーネントに「プリンタ設定」とありますので,
これが動作しないことには始まりません.

編集    削除
理恵  2003-09-11 02:02:25  No: 3638  IP: [192.*.*.*]

これは一度plSetPrinter,つまりプリンタ設定コンポーネントのテスト
プログラムが正常に実行できるか確認した方がいいかもしれません.

インストールしたところ、「プリンタ設定」は、正常に動きましたが・・・

編集    削除
Mr.XRAY  URL  2003-09-19 07:39:28  No: 3639  IP: [192.*.*.*]

亀レスですが...

理恵さん,Delphi7でインストールできましたか.
お待たせしました.Delphi7対応バージョンを,たった今UPしました.
よろしかつたらどうぞ.

編集    削除
理恵  2003-09-19 20:13:21  No: 3640  IP: [192.*.*.*]

Mr.XRAYさんありがとうございます。

プレビューできました。

編集    削除