AFsoft WebSite(エーエフソフト・ウェブサイト)
 

オペレーティング・システムについて

プログラミングについて
ホームページについて
キャドについて
電子カタログについて
書籍・雑誌
イベント
リンク集
DelphiXE3 [FMX]「ページ設定」画面(PageSetupDialog)2013/10/21
 
前頁で[Dialogs]内の「PrintDialog」(「印刷」画面)について書きました。次に同じく[Dialogs]内の「PageSetupDialog」(「ページ設定」画面)について見ていきます。
   【Delphi2010の記事はこちら】
   【DelphiXE3[VCLアプリケーション]の記事はこちら】
 
 


 
 
Options
ページ設定ダイアログのオプションを指定します。
Options は、一連の TPageSetupDialogOption を表しており、これらによって、ユーザーの入力や、[ページ設定]ダイアログの一部にコントロールの外観や機能の変更を、制限することができます。
・psoDefaultMinMargins
・psoDisableMargins
・psoDisableOrientation
・psoDisablePagePainting
・psoDisablePaper
・psoDisablePrinter
・psoMargins
・psoMinMargins
・psoShowHelp
・psoWarning
・psoNoNetworkButton
(ヘルプより)
MarginBottom
ボタンのマージンを示します。
Optionsが psoMargins の場合、MarginBottom は、[ページ設定]ダイアログの[余白]セクションの、[下]フィールドのデフォルト値を表します。
ユーザーが値をインチで入力した場合、MarginBottom はマージンを 1/1000 インチ単位で表します。ユーザーが値をミリメートルで入力した場合、MarginBottom はマージンを 1/100 ミリメートル単位で表します。
メモ:測定単位を変更するには、Units を使用してください。
「ボタン」ではなく「ボトム」=「下」ですね。以下の説明は同様なので以下省略します。
 
MarginLeft
左マージンを示します。
MarginRight
右マージンを示します。
MarginTop
上マージンを示します。
 
MinMarginBottom
下マージンの最小値を示します。
Options が psoMinMargins の場合、MinMarginBottom は、[ページ設定]ダイアログの[余白]セクションの、[下]フィールドに入力できる最小の値となります。
ユーザーが値をインチで入力した場合、MinMarginBottom は最小マージンを 1/1000 インチ単位で表します。ユーザーが値をミリメートルで入力した場合、MinMarginBottom は最小マージンを 1/100 ミリメートル単位で表します。
メモ:測定単位を変更するには、Units を使用してください。
以下の説明は同様なので以下省略します。
 
MinMarginLeft
左マージン最小値を示します
MinMarginRight
右マージン最小値を示します
MinMarginTop
上マージン最小値を示します
 
PageHeight
ページの高さを示します。
PageHeight は、ユーザーによって選択されたページの種類の高さを表します。
ユーザーが値をインチで入力した場合、PageHeight はページの高さを 1/1000 インチ単位で表します。 ユーザーが値をミリメートルで入力した場合、PageHeight はページの高さを 1/100 ミリメートル単位で表します。
PageWidth
ページの幅を示します。
PageWidth は、ユーザーによって選択されたページの種類の幅を表します。
ユーザーが値をインチで入力した場合、PageWidth はページの高さを 1/1000 インチ単位で表します。 ユーザーが値をミリメートルで入力した場合、PageWidth はページの高さを 1/100 ミリメートル単位で表します。
Units
[ページ設定]ダイアログの測定単位を表します。
Units は、[ページ設定]ダイアログで使用して変更できる、すべてのページプロパティの測定ユニットを表します。
Units に指定できる値は次のとおりです:
pmDefault
  ユーザーは、ロケール設定で決められた単位で値を指定する必要があります。
 
pmMillimeters
  ユーザーは、ミリメートルで値を指定する必要があります。
 
pmInches
  ユーザーは、インチで値を指定する必要があります。
 
(ヘルプより)
TPageSetupDialog は、ページ設定ダイアログを表示するためのクラスです。
 
TPageSetupDialog を使用すると、ページのプロパティを設定するためのダイアログボックスを表示できます。
 
メモ:実行時に、このダイアログは、Execute メソッドの呼び出しで起動されるまでは表示されません。
 
VCLアプリケーション同様、印刷プログラムを作成する際に、アプリケーション利用者が用紙に対する印刷領域を設定するための画面、を提供するのに利用します。
 
例えば下図のように配置し、下記のようにボタンのクリックイベントハンドラを記述します。

procedure TForm1.Button1Click(Sender: TObject);
var
 s : string ;
begin
 if (PageSetupDialog1.Execute) then begin
  s := s + '印刷領域' + #13+#10;
  s := s + 'マージン' + #13+#10;
  s := s + ' 左:' + IntToStr(PageSetupDialog1.MarginLeft) + #13+#10;
  s := s + ' 右:' + IntToStr(PageSetupDialog1.MarginRight) + #13+#10;
  s := s + ' 上:' + IntToStr(PageSetupDialog1.MarginTop) + #13+#10;
  s := s + ' 下:' + IntToStr(PageSetupDialog1.MarginBottom) + #13+#10;
  s := s + '用紙サイズ' + #13+#10;
  s := s + ' 横:' + FloatToStr(PageSetupDialog1.PageWidth) + #13+#10;
  s := s + ' 縦:' + FloatToStr(PageSetupDialog1.PageHeight) + #13+#10;
  ShowMessage(s);
 end;
end;
保存・コンパイル・実行をします。

「印刷」(Button1)をクリック




A3横に変更してみます


 
Unitsプロパティはデフォルトの「pmDefault」のまま、つまり、単位はロケール設定に依存する、という事で、まぁミリメートルかインチか、という事にはなると思われますが、Windowsの場合は、コントロールパネルの「地域と言語」の「形式」でどこを指定しているのかにより変わってきます。



ここを例えば「英語(米国)」にすると・・・




となります。
 
そのため、ミリメートルのつもりでプログラミングしていると、単位がデフォルトのままであれば、ロケール設定によってインチになっている場合もあるので、想定外の不具合を生じてしまう可能性がありますので注意が必要です。
 
 
さて、この画面では用紙サイズと向きが表示されていますが、この値は、現在のプリンタ設定の値と同じなのでしょうか?
 
試しに、前頁で記述した印刷画面を表示させてみます。

procedure TForm1.Button2Click(Sender: TObject);
begin
 PrintDialog1.Execute ;
end;
保存・コンパイル・実行をします。

[印刷]をクリック


[詳細設定]をクリックして、
A4縦だったものを A3横に設定し、[印刷]をクリック


[設定]をクリック


A3横になっているのを確認


A5縦にして[OK]クリック


[印刷]をクリック


[詳細設定]をクリックして、
A5縦になっているのを確認
 
以上、大丈夫な様子ですね。
 
というわけで、この画面で設定した用紙マージン値をアプリケーションの印刷プログラムで反映させるのは、プログラマの作業となります。この設定画面でマージンを指定したからといって、プリンタの印刷領域が自動的に変化する訳ではありません。
 
 
非ビジュアルコンポーネントですので、スタイルは無関係ですからそれについては記述しません。
 
 
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
▲2013/10/20
 2013/10/21
▼2013/10/21
 
シェアウェア
Script!World
データベース
 
お問い合わせ 
本サイトはリンクフリーです
リンクバナー
(C)Copyright 1999-2015. By AFsoft All Rights Reserved.