掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ディスプレイの解像度以上の大きさを持つフォームを印刷するには? (ID:34346)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ino668です。 printer.Canvasに直接、描画・印刷すればできそうだということがわかりました。 Formに現れていない部分を印刷することはできない。 ならば、別の方法に乗り換えるべきである。 ご指摘いただきながら、それができずにいました。 Mr.XRAYさん、KHE00221さん、くららさん 私の理解が遅く、 さらに要領を得ない質問を掲示したにもかかわらず、 長い間お付き合いいただき、感謝しています。 ありがとうございました。 以下が、そのソースです。 ------------------------------------ unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, printers, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; PrinterSetupDialog1: TPrinterSetupDialog; ButtonPrintPageSize: TButton; ButtonPrintScreenSize: TButton; ButtonPrintFormSize: TButton; procedure ButtonPrintPageSizeClick(Sender: TObject); procedure ButtonPrintScreenSizeClick(Sender: TObject); procedure ButtonPrintFormSizeClick(Sender: TObject); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.ButtonPrintPageSizeClick(Sender: TObject); var s: string; begin //プリンタのページサイズで描画・印刷 printer.Orientation:= poPortrait; s:= 'Orientation: '+ intToStr( ord( Printer.Orientation))+ chr($0d); s:= s+ 'Page Height: '+ intToStr( Printer.PageHeight)+ chr($0d); s:= s+ 'Page Width: '+ intToStr( Printer.PageWidth)+ chr($0d); Printer.Orientation:= poLandscape; s:= s+ 'Orientation: '+ intToStr( ord( Printer.Orientation))+ chr($0d); s:= s+ 'Page Height: '+ intToStr( Printer.PageHeight)+ chr($0d); s:= s+ 'Page Width: '+ intToStr( Printer.PageWidth)+ chr($0d)+ chr($0a); Label1.caption:=s; printer.Orientation:= poLandscape; PrinterSetUpDialog1.Execute; printer.BeginDoc; printer.Canvas.Rectangle(0,0,Printer.PageWidth-1,Printer.PageHeight-1); Printer.canvas.Ellipse(0,0,Printer.PageWidth-1,Printer.PageHeight-1); Printer.Canvas.TextOut(0,0, s); Printer.EndDoc; end; procedure TForm1.ButtonPrintScreenSizeClick(Sender: TObject); var s: string; begin //スクリーンサイズで描画・印刷 s:= 'Screen Height: '+ intToStr( Screen.Height)+ chr($0a); s:= s+ 'Screen Width: '+ intToStr( Screen.Width)+ chr($0a)+ chr($0a); Label1.caption:=s; printer.Orientation:= poLandscape; PrinterSetUpDialog1.Execute; printer.BeginDoc; printer.Canvas.Rectangle(0,0,Screen.Width-1,Screen.Height-1); Printer.canvas.Ellipse(0,0,Screen.Width-1,Screen.Height-1); Printer.Canvas.TextOut(0,0, s); Printer.EndDoc; end; procedure TForm1.ButtonPrintFormSizeClick(Sender: TObject); var s: string; begin //最大化したフォームサイズで描画・印刷 Self.WindowState:=wsMaximized; s:= 'Form Height: '+ intToStr( Self.Height)+ chr($0a); s:= s+ 'Form Width: '+ intToStr( Self.Width)+ chr($0a)+ chr($0a); Label1.caption:=s; printer.Orientation:= poLandscape; PrinterSetUpDialog1.Execute; printer.BeginDoc; printer.Canvas.Rectangle(0,0,Self.Width-1,Self.Height-1); Printer.canvas.Ellipse(0,0,Self.Width-1,Self.Height-1); Printer.Canvas.TextOut(0,0, s); Printer.EndDoc; end; end. ----------------------------------------------------------- 以上、本当にお世話になりました。 ありがとうございました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.