印刷プレビューで

解決


きつつき  2003-05-28 03:23:17  No: 3623

はじめまして。

印刷プレビューコンポーネント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

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

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


きつつき  2003-05-29 03:46:39  No: 3625

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

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

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


にしの  2003-05-29 05:42:17  No: 3626

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


理恵  2003-09-09 18:42:35  No: 3627

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


Jボス  2003-09-09 20:54:57  No: 3628

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


Mr.XRAY  2003-09-09 21:58:01  No: 3629

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


Mr.XRAY  2003-09-10 04:12:37  No: 3630

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

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

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

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


理恵  2003-09-10 17:22:49  No: 3631

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


Jボス  2003-09-10 18:08:52  No: 3632

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

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

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


理恵  2003-09-10 21:48:43  No: 3633

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

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


にしの  2003-09-10 22:20:19  No: 3635

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

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


Mr.XRAY  2003-09-10 22:39:41  No: 3637

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

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


理恵  2003-09-11 02:02:25  No: 3638

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

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


Mr.XRAY  URL  2003-09-19 07:39:28  No: 3639

亀レスですが...

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


理恵  2003-09-19 20:13:21  No: 3640

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

プレビューできました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加