喫茶XRAYトップページ

[スレッド全体
]

[2693] DesignedPaperSizeメソッドについて教えて下さい!返信 削除
2009/10/21 (水) 16:14:49 KSCHomePage
KSCです。

【印刷プレビューコンポーネント】
 自動拡大縮小印刷のための基準用紙サイズ指定
 DesignedPaperSize

を利用して描画したプレビューしているものを、
プレビューの[プリンタ・用紙]で設定したサイズに
拡大縮小しようとしたのですが、

【拡大】(設計時は「A4横」で「A3横」に変更)については、
プレビュー画面も印刷結果も何の問題も無かったのですが、

【縮小】(設計時は「A3横」で「A4横」に変更については、
「印刷可能範囲」がおかしくなってか(?)、添付イメージのような
プレビュー画面となり、印刷結果もプレビュー画面通りの印刷範囲で
印刷されます。

ただ、描画されている線やテキストなどの縮尺は、「A3→A4」の
縮尺になっています。

プレビューの[プリンタ・用紙]でサイズ変更後に何か値を変更または
再設定しないといけないのでしょうか?


[2695] Re:DesignedPaperSizeメソッドについて教えて下さい!返信 削除
2009/10/21 (水) 17:58:42 Mr.XRAY
▼ KSCさん

> 【印刷プレビューコンポーネント】
>  自動拡大縮小印刷のための基準用紙サイズ指定
>  DesignedPaperSize


これは,早速調べてみます.
最近,このメソッドのテストサボっています.すみません.
勤務先の職場で,B版が使われていて,何とかしてA版に移行したい
ために追加したのですが,現在は既にA版に完全移行してしまった
ので,私自身は使っていないため... (言い訳です)

[2697] Re2:DesignedPaperSizeメソッドについて教えて下さい!返信 削除
2009/10/21 (水) 18:20:03 KSCHomePage
KSCです。

> これは,早速調べてみます.

宜しくお願い致します。

ちなみに「A3横」→「A4横」を実行した時の
plPrevの用紙情報を載せておきます。(参考になるか分かりませんが)

[2701] TplPev修正版 まとめレス返信 削除
2009/10/22 (木) 17:01:18 Mr.XRAY
▼ KSCさん

> plPrevの用紙情報を載せておきます。(参考になるか分かりませんが)

お手数かけてスミマセン.
この図ありがたいです.コードのどの部分か推測の資料になります.
掲示板に図を1枚だけですが,表示できるように甲斐があります.

今日中に修正版アップします.
今回は,再インストールの必要はありません.
ファイルの上書きでOKです.

この図の文字列の幅のほうですが,
これは検討事項とさせてください.
もしかしたらそのままかも知れません.


[2702] Re:TplPev修正版UPしました返信 削除
2009/10/22 (木) 17:42:03 Mr.XRAY
> 今日中に修正版アップします.

今,UPしました.

> この図の文字列の幅のほうですが,
> これは検討事項とさせてください.


これ,上の「テストライン」の方が正常のような気がしますね.
う〜ん.

[2703] Re2:TplPev修正版UPしました返信 削除
2009/10/22 (木) 19:05:06 KSCHomePage
KSCです。


> 今,UPしました.

早速、ありがとうございます。
が、コンパイルできません。

plPrevFrm.pasにおいて、

556行 : TPv(FPrev).ReadPrinter(TPv(FPrev).SavePrinterStr);

コンパイラーから、「SavePrinterStr」が未定儀の識別子と
言われてしまいました。

尚、マスターの書き込み通り、コンポーネントの全ソースを上書き
しているだけです。

[2704] Re3:TplPev修正版UPしました返信 削除
2009/10/22 (木) 19:16:00 Mr.XRAY
▼ KSCさん
> 556行 : TPv(FPrev).ReadPrinter(TPv(FPrev).SavePrinterStr);
>
> コンパイラーから、「SavePrinterStr」が未定儀の識別子と
> 言われてしまいました。


えっ,そんな?
ちょっと待ってくださいませ.

[2705] Re4:TplPev修正版UPしました返信 削除
2009/10/22 (木) 19:27:22 Mr.XRAY
▼ KSCさん
> > 556行 : TPv(FPrev).ReadPrinter(TPv(FPrev).SavePrinterStr);
> >
> > コンパイラーから、「SavePrinterStr」が未定儀の識別子と
> > 言われてしまいました。


このSavePrinterStrはVer4.82から使用していません.
Ver4.81にはありますが,
もしかしてPLPREVFRM.pasが古くありませんか.
日付が本日になっているか確認してください.
あるいは古いPLPREVFRM.pasにバスが通っているとか...

[2706] 2:「DesignedPaperSize」のテスト結果イメージを掲載返信 削除
2009/10/22 (木) 20:02:21 KSCHomePage
KSCです。

「DesignedPaperSize」のテスト結果のイメージを添付します。

Ver4.85の場合

[2708] Re:2:「DesignedPaperSize」のテスト結果イメージを掲載返信 削除
2009/10/22 (木) 20:32:13 Mr.XRAY
▼ KSCさん

> 「DesignedPaperSize」のテスト結果のイメージを添付します。

う〜ん.変ですね(苦笑)
ちょっと待ってください.

[2709] Re2:2:「DesignedPaperSize」のテスト結果イメージを掲載返信 削除
2009/10/22 (木) 21:10:39 Mr.XRAY
> う〜ん.変ですね(苦笑)
> ちょっと待ってください.


以下のコードでテストしてみました.
上がA3,下がプレビューの[プリンタ設定]ボタンでA4にした結果です.
う〜ん(こればっかりですね),さて.

implementation

uses Printers;

{$R *.DFM}

//=============================================================================
//  DesignedPaperSizeのテスト
//  逐次表示方式のコード
//
//  フォームにplSetPrinterコンポーネントを配置して,適当なプリンタ名をセット
//  しておく
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
begin
    //逐次表示方式では[プリンタ・用紙]のボタンが使用可能
    plPrev1.BtnOptions := plPrev1.BtnOptions+[boPrinterSetBtn];

    //3頁分
    plPrev1.PageCount := 3;

    //DesignedPaperSizeでA3を指定するのでA3用紙の横に設定
    plPrev1.plSetPrinter.PaperNumber := DMPAPER_A3;
    plPrev1.plSetPrinter.Orientation := poLandscape;

    //設計時の用紙設定(このDesignedPaperSizeを使用すると
    //印刷時に設定用紙サイズに拡大または縮小して印刷することができる
    plPrev1.DesignedPaperSize(2970,4200);
    plPrev1.ProcName := HogeHoge;

    //プレビュー開始.逐次表示方式にはShowメソッドはない
    plPrev1.ShowModal;
end;
//=============================================================================
//  実際の描画メソッド
//  このメソッド内に本コンポーネントのCanvasを使用したコードを記述.
//  複数頁の場合は,頁番号によって処理を分岐する.
//=============================================================================
procedure TForm1.HogeHoge;
begin
    if plPrev1.PageNumber = 1 then begin
      plPrev1.FontHeight (120);
      plPrev1.TextOut(100,300,'DesignedPaperSizeのテスト');
      plPrev1.TextOut(100,450,'[実行時のプリンタ設定でプレビューを確認]');
    end else

    if plPrev1.PageNumber = 2 then begin
      plPrev1.FontHeight (120);
      plPrev1.TextOut(100,300,'DesignedPaperSizeのテスト');
      plPrev1.TextOut(100,450,'[2頁目]');
    end else

    if plPrev1.PageNumber = 3 then begin
      plPrev1.FontHeight (120);
      plPrev1.TextOut(100,300,'DesignedPaperSizeのテスト');
      plPrev1.TextOut(100,450,'[3頁目]');
      plPrev1.Canvas.TextOut(100,600,'テストライン');
    end;

    //全頁共通の印刷コード
    //印刷可能領域に四角形を描画
    //少しは印刷領域の誤差があると思われるので1.0mm余裕をつける
    plPrev1.PenWidth(1);
    plPrev1.Rectangle(plPrev1.LeftOffset,
                      plPrev1.LeftOffset+plPrev1.PageWidth-10,
                      plPrev1.TopOffset,
                      plPrev1.TopOffset+plPrev1.PageHeight-10);
end;


[2710] Re3:2:「DesignedPaperSize」のテスト結果イメージを掲載返信 削除
2009/10/22 (木) 22:39:05 KSCHomePage
KSCです。

> 以下のコードでテストしてみました.
> 上がA3,下がプレビューの[プリンタ設定]ボタンでA4にした結果です.
> う〜ん(こればっかりですね),さて.


コードをコピペさせてもらい、テストしましたが同様の結果を得ました。

で、そんな中、ちょっと思ったのですが「逆転してませんか?」

【縮小】
 「A3」→「A4」の時に描画データが拡大されている。
 ([2709]記事のコードを実行した状態。)
【拡大】
 「A4」→「A3」の時に描画データが縮小されている。
 (こちらのソフトで確認しました。)


[2711] Re4:2:「DesignedPaperSize」のテスト結果イメージを掲載返信 削除
2009/10/22 (木) 23:04:59 Mr.XRAY
▼ KSCさん

> 【縮小】
>  「A3」→「A4」の時に描画データが拡大されている。
>  ([2709]記事のコードを実行した状態。)


ハハハッ,私なんか勘違いしていました.
そうですよね.明日にても修正します.
どうして,こんな勘違いを(冷や汗)
これじゃ,単に用紙サイズを変更しただけですね.

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