Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年06月04日] [更新 2013年11月28日] ワード操作フォームEx
ワード操作フォームEx   参考コード類
ページ設定ダイアログ
動作確認等 Windows 7 U64(SP1) + Delphi XE2 + Word 2010







ワードのページ設定ダイアログの表示


図のようなワードのページ設定ダイアログを表示する例です.
Dialog オブジェクトの DefaultTab プロパティで,ダイアログが起動した時にアクティブするタブを指定できます.


図1
ページ設定ダイアログ
  • 起動時に値 (プロパティ) をセットして表示することも可能

リスト1
ワードのページ設定ダイアログを表示
//=============================================================================
//  ワードのページ設定ダイアログの表示
//
//  前に表示したタブを初期表示
//=============================================================================
procedure TplWordFormEx2.Button1Click(Sender: TObject);
begin
  wdfSetFocusWord;
  wdfWordApp.Dialogs.Item(wdDialogFilePageSetup).Show(EmptyParam);
  wdfSetFocusWord;
end;

//=============================================================================
//  ワードのページ設定ダイアログの表示
//
//  [その他]のタブを初期表示
//=============================================================================
procedure TplWordFormEx2.Button2Click(Sender: TObject);
var
  ADialog : Word2000.Dialog;
begin
  ADialog := wdfWordApp.Dialogs.Item(wdDialogFilePageSetup);
  ADialog.DefaultTab := wdDialogFilePageSetupTabLayout;
  ADialog.Show(EmptyParam);
end;

//=============================================================================
//  ワードのページ設定ダイアログの表示
//
//  [文字数と行数]のタブを初期表示
//=============================================================================
procedure TplWordFormEx2.Button3Click(Sender: TObject);
var
  ADialog : Word2000.Dialog;
begin
  ADialog := wdfWordApp.Dialogs.Item(wdDialogFilePageSetup);
  ADialog.DefaultTab := wdDialogFilePageSetupTabCharsLines;
  ADialog.Show(EmptyParam);
end;

//=============================================================================
//  ワードのページ設定ダイアログの表示
//
//  [余白]のタブを初期表示
//=============================================================================
procedure TplWordFormEx2.Button4Click(Sender: TObject);
var
  ADialog : Word2000.Dialog;
begin
  ADialog := wdfWordApp.Dialogs.Item(wdDialogFilePageSetup);
  ADialog.DefaultTab := wdDialogFilePageSetupTabMargins;
  ADialog.Show(EmptyParam);
end;

//=============================================================================
//  ワードのページ設定ダイアログの表示
//
//  [用紙]のタブを初期表示
//=============================================================================
procedure TplWordFormEx2.Button5Click(Sender: TObject);
var
  ADialog : Word2000.Dialog;
begin
  ADialog := wdfWordApp.Dialogs.Item(wdDialogFilePageSetup);
  ADialog.DefaultTab := wdDialogFilePageSetupTabPaperSource;
  ADialog.Show(EmptyParam);
end;




プロパティを設定してからワードのページ設定ダイアログを表示


PageSetup オブジェクトと Dialog オブジェクトのプロパティを設定してからダイアログを表示するサンプルです.
このコードでは,用紙サイズ,給紙方法 (トレイ),印刷の方向,余白を設定しています.


リスト2
プロパティを設定してからワードのページ設定ダイアログの表示
procedure TplWordFormEx2.Button6Click(Sender: TObject);
var
  objDialog : OleVariant;
begin
  if not wdfFileOpened then exit;

  //用紙サイズはあらかじめ設定しておかないと反映されないようだ
  wdfWordDoc.PageSetup.PaperSize      := wdPaperA5;
  wdfWordDoc.PageSetup.FirstPageTray  := wdPrinterManualFeed;
  wdfWordDoc.PageSetup.OtherPagesTray := wdPrinterManualFeed;

  objDialog := wdfWordApp.Dialogs.Item(wdDialogFilePageSetup);

  objDialog.Orientation  := wdOrientLandscape;
  objDialog.TopMargin    := wdfWordApp.Application.MillimetersToPoints(20);
  objDialog.BottomMargin := wdfWordApp.Application.MillimetersToPoints(15);

  objDialog.Show;

  wdfSetFocusWord;
end;




Delphi のページ設定ダイアログの表示


Delphi の TPageSetupDialog を使用する例です.
ただし,このコードで設定した用紙サイズはワードに反映されますが,給紙方法は必ずしも反映されるとは限りません.また,上のワードのページ設定ダイアログで設定した用紙サイズと給紙方法は反映されません.

文字数と行数等の余計な設定をさせたくない場合はいいかも知れませんが,ワードやエクセルはその内部でプリンタの情報を操作しています.用紙サイズの値も Windows API の定数値と違います.紙サイズ,給紙方法の値をワードの値と整合させるのは結構面倒と言うより,無理かも知れません.
余白設定専用のダイアログを作成して使用した方がいいかも知れません.


図2
Delphi のページ設定ダイアログ

リスト3
Delphi のページ設定ダイアログを表示
//=============================================================================
//  Delphiのページ設定ダイアログTPageSetupDialogを表示
//  現在の設定値を初期表示
//
//  設定は,ワードのページ設定ダイアログの[余白]タブで確認できる
//=============================================================================
procedure TplWordFormEx2.Button7Click(Sender: TObject);
var
  ptRatio : Double;
begin
  if not wdfFileOpened then exit;

  //mm単位の数値をptに変換する係数
  ptRatio := 72.0 / 25.4 / 100.0;

  with PageSetupDialog1 do begin
    //現在の設定値を取得
    Units := pmMillimeters;
    if wdfWordDoc.PageSetup.Orientation = wdOrientPortrait then begin
      Printer.Orientation := poPortrait;
    end else begin
      Printer.Orientation := poLandscape;
    end;

    MarginLeft   := Trunc(wdfWordDoc.PageSetup.LeftMargin   / ptRatio);
    MarginTop    := Trunc(wdfWordDoc.PageSetup.TopMargin    / ptRatio);
    MarginRight  := Trunc(wdfWordDoc.PageSetup.RightMargin  / ptRatio);
    MarginBottom := Trunc(wdfWordDoc.PageSetup.BottomMargin / ptRatio);

    if Execute then begin
      //[OK]で閉じたら設定
      wdfWordDoc.PageSetup.LeftMargin   := ptRatio * MarginLeft;
      wdfWordDoc.PageSetup.TopMargin    := ptRatio * MarginTop;
      wdfWordDoc.PageSetup.RightMargin  := ptRatio * MarginRight;
      wdfWordDoc.PageSetup.BottomMargin := ptRatio * MarginBottom;
      wdfWordDoc.PageSetup.PageWidth    := ptRatio * PageWidth;
      wdfWordDoc.PageSetup.PageHeight   := ptRatio * PageHeight;
    end;
  end;
end;