> う〜ん.変ですね(苦笑)
> ちょっと待ってください.
以下のコードでテストしてみました.
上が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;
|