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







各種ダイアログの表示


Dialog オブジェクトで各種ダイアログを表示します.
隠しコマンド (ショートカット) 等を設けておいて,稼動先で微調整,という目的に利用できるかも知れません.
このプログラムのダイアログのリストは,Word 2003 までのものですが全てではありせん.また,全てがワード操作フォームEx で使用できるとは限りません.表示すると動作不良となる場合もあります.

ワードのダイアログは,Word 2007 よりも前のバージョンでは全てモーダル表示となっていて,ダイアログを閉じるまでワード本体は操作できないようになっていました.
Word 2007 ではダイアログによってはモードレスで表示するものがあります.ワード操作フォームEx で表示した場合はダイアログを閉じるまではフォームを操作できないようにしていますが,モーダル表示ということではありません.また Word と Windows のバージョンによっては,ダイアログを表示すると,ダイアログの残像が画面に残り,白く抜けてしまうことがあります.
この現象は,少なくとも Windows 7 U64(SP1) + Word 2007 では発生していません.

各々の Dialog には,ダイアログによっていろいろなプロパティがあります.このサンプルでは,Show メソッドでダイアログを表示していますが,それらのプロパティを設定して,Execute メソッドを実行すると,ダイアログを表示しないでプロパティの設定ができます.


図1
ダイアログのリスト
  • Button と Listbox を配置しておく
図2
バージョン情報ダイアログを表示

リスト1
各種のダイアログの表示 (順不同)
//=============================================================================
//  フォーム表示開始時の処理
//=============================================================================
procedure TplWordFormEx2.FormShow(Sender: TObject);
begin
  ListBox1.Items.Clear;
  with ListBox1.Items do begin
     BeginUpdate;
     AddObject( 'ネットワークドライブへの接続',
              TObject( wdDialogConnect ));
     AddObject( 'アプリケーションの実行',
              TObject( wdDialogControlRun ));
     AddObject( '(オブジェクトの) 変換',
              TObject( wdDialogConvertObject ));
     AddObject( 'ファイルのコピー',
              TObject( wdDialogCopyFile ));
     AddObject( '新しい文書パーツの作成',
              TObject( wdDialogCreateAutoText ));
     AddObject( '文書詳細 (統計)',
              TObject( wdDialogDocumentStatistics ));
     AddObject( 'オブジェクトの整列',
              TObject( wdDialogDrawAlign ));
     AddObject( 'グリッド線',
              TObject( wdDialogDrawSnapToGrid ));
     AddObject( 'オートコレクト (定型句)',
              TObject( wdDialogEditAutoText ));
     AddObject( '検索と置換 [検索] タブ',
              TObject( wdDialogEditFind ));
     AddObject( '検索と置換 [ジャンプ] タブ',
              TObject( wdDialogEditGoTo ));
     AddObject( 'オブジェクトの編集',
              TObject( wdDialogEditObject ));
     AddObject( '形式を選択して貼付け',
              TObject( wdDialogEditPasteSpecial ));
     AddObject( '検索と置換 [置換]タブ',
              TObject( wdDialogEditReplace ));
     AddObject( '分類の編集',
              TObject( wdDialogEditTOACategory ));
     AddObject( 'ページ設定',
              TObject( wdDialogFileDocumentLayout ));
     AddObject( 'ファイルを開く',
              TObject( wdDialogFileFind ));
     AddObject( '新規作成',
              TObject( wdDialogFileNew ));
     AddObject( 'ファイルを開く',
              TObject( wdDialogFileOpen ));
     AddObject( 'ページ設定 [文字数と行数]',
              TObject( wdDialogFilePageSetup ));
     AddObject( '印刷',
              TObject( wdDialogFilePrint ));
     AddObject( 'プリンタの設定',
              TObject( wdDialogFilePrintSetup ));
     AddObject( 'ファイル名を付けて保存',
              TObject( wdDialogFileSaveAs ));
     AddObject( '版の履歴',
              TObject( wdDialogFileSaveVersion ));
     AddObject( '文書情報',
              TObject( wdDialogFileSummaryInfo ));
     AddObject( '文書の版',
              TObject( wdDialogFileVersions ));
     AddObject( '文字列の均等割り付け',
              TObject( wdDialogFitText ));
     AddObject( '宛先のフォント',
              TObject( wdDialogFormatAddrFonts ));
     AddObject( '線種とページ罫線と網かけの設定',
              TObject( wdDialogFormatBordersAndShading ));
     AddObject( '箇条書きと段落番号',
              TObject( wdDialogFormatBulletsAndNumbering ));
     AddObject( '文字種の変換',
              TObject( wdDialogFormatChangeCase ));
     AddObject( '段組み',
              TObject( wdDialogFormatColumns ));
     AddObject( '線種とページ罫線と網かけの設定 [罫線] タブ',
              TObject( wdDialogFormatDefineStyleBorders ));
     AddObject( 'フォント',
              TObject( wdDialogFormatDefineStyleFont ));
     AddObject( 'レイアウト枠 (作成)',
              TObject( wdDialogFormatDefineStyleFrame ));
     AddObject( '言語の選択',
              TObject( wdDialogFormatDefineStyleLang ));
     AddObject( '段落',
              TObject( wdDialogFormatDefineStylePara ));
     AddObject( 'タブとリーダー',
              TObject( wdDialogFormatDefineStyleTabs ));
     AddObject( 'オートシェイプの書式設定',
              TObject( wdDialogFormatDrawingObject ));
     AddObject( 'ドロップキャップ',
              TObject( wdDialogFormatDropCap ));
     AddObject( '囲い文字',
              TObject( wdDialogFormatEncloseCharacters ));
     AddObject( 'フォント',
              TObject( wdDialogFormatFont ));
     AddObject( 'レイアウト枠 (編集)',
              TObject( wdDialogFormatFrame ));
     AddObject( 'ページ番号の書式',
              TObject( wdDialogFormatPageNumber ));
     AddObject( '段落',
              TObject( wdDialogFormatParagraph ));
     AddObject( '図の書式設定',
              TObject( wdDialogFormatPicture ));
     AddObject( '差出人住所',
              TObject( wdDialogFormatRetAddrFonts ));
     AddObject( 'セクションの設定',
              TObject( wdDialogFormatSectionLayout ));
     AddObject( '文字 / 段落スタイルの設定',
              TObject( wdDialogFormatStyle ));
     AddObject( 'テンプレートの適用',
              TObject( wdDialogFormatStyleGallery ));
     AddObject( 'タブとリーダー',
              TObject( wdDialogFormatTabs ));
     AddObject( 'テーマ',
              TObject( wdDialogFormatTheme ));
     AddObject( 'バージョン情報',
              TObject( wdDialogHelpAbout ));
     AddObject( '新しいラベル名',
              TObject( wdDialogInsertAddCaption ));
     AddObject( '図表番号の自動設定',
              TObject( wdDialogInsertAutoCaption ));
     AddObject( 'ブックマーク',
              TObject( wdDialogInsertBookmark ));
     AddObject( '改ページ',
              TObject( wdDialogInsertBreak ));
     AddObject( '図表番号',
              TObject( wdDialogInsertCaption ));
     AddObject( '図表番号の書式',
              TObject( wdDialogInsertCaptionNumbering ));
     AddObject( '相互参照',
              TObject( wdDialogInsertCrossReference ));
     AddObject( 'データベース',
              TObject( wdDialogInsertDatabase ));
     AddObject( '日付と時刻',
              TObject( wdDialogInsertDateTime ));
     AddObject( 'フィールド',
              TObject( wdDialogInsertField ));
     AddObject( 'ファイルの挿入',
              TObject( wdDialogInsertFile ));
     AddObject( '脚注と文末脚注',
              TObject( wdDialogInsertFootnote ));
     AddObject( 'フォームフィールド',
              TObject( wdDialogInsertFormField ));
     AddObject( 'ハイパーリンクの挿入',
              TObject( wdDialogInsertHyperlink ));
     AddObject( '索引[索引]タブ',
              TObject( wdDialogInsertIndex ));
     AddObject( '索引と目次',
              TObject( wdDialogInsertIndexAndTables ));
     AddObject( '番号',
              TObject( wdDialogInsertNumber ));
     AddObject( 'オブジェクトの挿入',
              TObject( wdDialogInsertObject ));
     AddObject( 'ページ番号',
              TObject( wdDialogInsertPageNumbers ));
     AddObject( '図の挿入',
              TObject( wdDialogInsertPicture ));
     AddObject( '記号と特殊文字',
              TObject( wdDialogInsertSymbol ));
     AddObject( '引用文献一覧 [引用文献一覧] タブ',
              TObject( wdDialogInsertTableOfAuthorities ));
     AddObject( '目次 [目次] タブ',
              TObject( wdDialogInsertTableOfContents ));
     AddObject( '図表目次 [図表目次] タブ',
              TObject( wdDialogInsertTableOfFigures ));
     AddObject( 'コマンド一覧',
              TObject( wdDialogListCommands ));
     AddObject( 'データファイルの作成',
              TObject( wdDialogMailMergeCreateDataSource ));
     AddObject( 'ヘッダーファイルの作成',
              TObject( wdDialogMailMergeCreateHeaderSource ));
     AddObject( '区切り文字の指定',
              TObject( wdDialogMailMergeFindRecord ));
     AddObject( '差し込み印刷ヘルパー',
              TObject( wdDialogMailMergeHelper ));
     AddObject( 'Word フィールドの挿入',
              TObject( wdDialogMailMergeInsertAsk ));
     AddObject( 'Word フィールドの挿入: Fill-in',
              TObject( wdDialogMailMergeInsertFillIn ));
     AddObject( 'Word フィールドの挿入: IF',
              TObject( wdDialogMailMergeInsertIf ));
     AddObject( 'Word フィールドの挿入: Next Record If',
              TObject( wdDialogMailMergeInsertNextIf ));
     AddObject( 'Word フィールドの挿入: Set',
              TObject( wdDialogMailMergeInsertSet ));
     AddObject( 'Word フィールドの挿入: Skip Record If',
              TObject( wdDialogMailMergeInsertSkipIf ));
     AddObject( 'データファイルを開く',
              TObject( wdDialogMailMergeOpenDataSource ));
     AddObject( 'ヘッダーファイルを開く',
              TObject( wdDialogMailMergeOpenHeaderSource ));
     AddObject( '引用文献の登録',
              TObject( wdDialogMarkCitation ));
     AddObject( '索引登録',
              TObject( wdDialogMarkIndexEntry ));
     AddObject( '目次項目の登録',
              TObject( wdDialogMarkTableOfContentsEntry ));
     AddObject( '新しいツールバー',
              TObject( wdDialogNewToolbar ));
     AddObject( '脚注と文末脚注のオプション',
              TObject( wdDialogNoteOptions ));
     AddObject( '構成内容変更',
              TObject( wdDialogOrganizer ));
     AddObject( 'ルビ',
              TObject( wdDialogPhoneticGuide ));
     AddObject( '表のオートフォーマット',
              TObject( wdDialogTableAutoFormat ));
     AddObject( '表の行 / 列 / セルの削除',
              TObject( wdDialogTableDeleteCells ));
     AddObject( 'セルの幅と高さ',
              TObject( wdDialogTableFormatCell ));
     AddObject( '計算式',
              TObject( wdDialogTableFormula ));
     AddObject( '表の行 / 列 / セルの挿入',
              TObject( wdDialogTableInsertCells ));
     AddObject( '行の挿入',
              TObject( wdDialogTableInsertRow ));
     AddObject( '表の挿入',
              TObject( wdDialogTableInsertTable ));
     AddObject( '並べ替え',
              TObject( wdDialogTableSort ));
     AddObject( 'セルの分割',
              TObject( wdDialogTableSplitCells ));
     AddObject( '表の解除',
              TObject( wdDialogTableToText ));
     AddObject( '中国語の翻訳',
              TObject( wdDialogTCSCTranslator ));
     AddObject( '文字列を表にする',
              TObject( wdDialogTextToTable ));
     AddObject( '変更箇所の確認',
              TObject( wdDialogToolsAcceptRejectChanges ));
     AddObject( 'スタートアップオプションの変更',
              TObject( wdDialogToolsAdvancedSettings ));
     AddObject( 'オートコレクト',
              TObject( wdDialogToolsAutoCorrect ));
     AddObject( 'オートコレクトの例外処理',
              TObject( wdDialogToolsAutoCorrectExceptions ));
     AddObject( 'オートコレクト',
              TObject( wdDialogToolsAutoManager ));
     AddObject( '要約の作成',
              TObject( wdDialogToolsAutoSummarize ));
     AddObject( '箇条書きと段落番号',
              TObject( wdDialogToolsBulletsNumbers ));
     AddObject( '文書の比較',
              TObject( wdDialogToolsCompareDocuments ));
     AddObject( 'フォルダの作成',
              TObject( wdDialogToolsCreateDirectory ));
     AddObject( '宛名ラベル作成 [封筒] タブ表示',
              TObject( wdDialogToolsCreateEnvelope ));
     AddObject( '宛名ラベル作成 [ラベル] タブ表示',
              TObject( wdDialogToolsCreateLabels ));
     AddObject( 'キーボードのユーザ設定',
              TObject( wdDialogToolsCustomizeKeyboard ));
     AddObject( '宛名ラベル作成',
              TObject( wdDialogToolsEnvelopesAndLabels ));
     AddObject( '変更箇所の表示',
              TObject( wdDialogToolsHighlightChanges ));
     AddObject( 'ハイフネーション',
              TObject( wdDialogToolsHyphenation ));
     AddObject( '言語の選択',
              TObject( wdDialogToolsLanguage ));
     AddObject( 'マクロ',
              TObject( wdDialogToolsMacro ));
     AddObject( 'マクロの記録',
              TObject( wdDialogToolsMacroRecord ));
     AddObject( 'データフィールドの編集',
              TObject( wdDialogToolsManageFields ));
     AddObject( '文書の比較',
              TObject( wdDialogToolsMergeDocuments ));
     AddObject( 'Word のオプション [基本設定]',
              TObject( wdDialogToolsOptions ));
     AddObject( 'オートコレクト (一括フォーマット)',
              TObject( wdDialogToolsOptionsAutoFormat ));
     AddObject( 'オートコレクト (入力フォーマット)',
              TObject( wdDialogToolsOptionsAutoFormatAsYouType ));
     AddObject( 'Word のオプション [右から左]',
              TObject( wdDialogToolsOptionsBidi ));
     AddObject( 'Word のオプション [互換性]',
              TObject( wdDialogToolsOptionsCompatibility ));
     AddObject( 'Word のオプション [詳細設定]',
              TObject( wdDialogToolsOptionsEdit ));
     AddObject( '既定のフォルダ',
              TObject( wdDialogToolsOptionsFileLocations ));
     AddObject( 'あいまい検索',
              TObject( wdDialogToolsOptionsFuzzy ));
     AddObject( 'Word のオプション [一般]',
              TObject( wdDialogToolsOptionsGeneral ));
     AddObject( 'Word のオプション [印刷]',
              TObject( wdDialogToolsOptionsPrint ));
     AddObject( 'Word のオプション [保存]',
              TObject( wdDialogToolsOptionsSave ));
     AddObject( '変更の履歴',
              TObject( wdDialogToolsOptionsTrackChanges ));
     AddObject( 'Word のオプション [文字体裁]',
              TObject( wdDialogToolsOptionsTypography ));
     AddObject( 'Word のオプション [ユーザー情報]',
              TObject( wdDialogToolsOptionsUserInfo ));
     AddObject( 'Word のオプション [表示]',
              TObject( wdDialogToolsOptionsView ));
     AddObject( '文書の保護',
              TObject( wdDialogToolsProtectDocument ));
     AddObject( '変更箇所の表示',
              TObject( wdDialogToolsRevisions ));
     AddObject( 'テンプレートとアドイン',
              TObject( wdDialogToolsTemplates ));
     AddObject( '類義語辞典',
              TObject( wdDialogToolsThesaurus ));
     AddObject( '文書の保護解除',
              TObject( wdDialogToolsUnprotectDocument ));
     AddObject( '文字カウント',
              TObject( wdDialogToolsWordCount ));
     AddObject( '割注',
              TObject( wdDialogTwoLinesInOne ));
     AddObject( '目次の更新',
              TObject( wdDialogUpdateTOC ));
     AddObject( 'ズーム',
              TObject( wdDialogViewZoom ));
     AddObject( 'Web オプション',
              TObject( wdDialogWebOptions ));
     AddObject( 'ウィンドウの選択',
              TObject( wdDialogWindowActivate ));
     EndUpdate
  end;
  ListBox1.Sorted := True;

  //表示する文書の指定
  wdfFileFullPath := 'ダイアログテスト文書.doc';

  //元のOnShowを実行
  inherited;
end;

//=============================================================================
//  選択したリストボックスのItemに相当するダイアログを表示
//=============================================================================
procedure TplWordFormEx2.Button1Click(Sender: TObject);
var
  pIndex   : OleVariant;
  pTimeOut : OleVariant;
begin
  if ListBox1.ItemIndex < 0 then exit;

  wdfSetFocusWord;

  pIndex   := Integer(ListBox1.Items.Objects[ListBox1.ItemIndex]);
  pTimeOut := 0;
  try
    wdfWordApp.Dialogs.Item(pIndex).Show(pTimeOut);
  except
    raise;
  end;
  wdfSetFocusWord;
end;