Delphi Programming / Object Pascal
サイトのトップページへ リンクのページへ ロゴマーク
[掲載 2009年05月12日] [更新 2010年10月12日] ワード操作フォームEx
ワード操作フォームEx
使用方法
動作確認等 -







継承したフォームを使用


使用方法は、Delphi の TForm と同じです。基本的に、TplWordFormEx を継承したフォームを作成して使用します。それをプロジェクトに追加して使用します。
リポジトリから継承フォームを作成する場合は、[コンポーネントの登録方法等] のページリポジトリへの登録の記事を参考にしてください。


リスト1
ワード操作フォームEx (plWordFormEx2 は継承フォーム) を表示する
procedure TForm1.Button1Click(Sender: TObject);
begin
  plWordFormEx2.ShowModal;
end;


起動時にワード文書を表示する場合は、以下のように、必ずワード操作フォームEx を表示する前に指定します。
特に、Windows Vista 以降のテーマの描画にはタイムラグがあります。ワード操作フォームEx のフォーム表示直後に文書を表示しようとすると、ワードの描画が正常に行われません。


リスト2
最初に表示するワード文書を指定する
procedure TForm1.Button1Click(Sender: TObject);
begin
  //起動時に表示する文書名
  plWordFormEx2.wdfFileFullPath := '表操作テスト文書.doc';
  plWordFormEx2.ShowModal;
end;




コピーして使用


添付のテストプログラムの [メインフォームとして起動] のフォーム関係ファイルをプロジェクトのフォルダにコピーして利用すると便利です
この場合、リポジトリに登録する必要はありません。plWordEx.pas, plWordEx.dfm がパスの通った場所にあれば使用可能です。




操作用ボタン類


以下のボタン類があります。
これらのボタンをクリックした場合、入力フォーカスはフォームになります。ワードへの直接入力が主な作業の場合、プロパティ wdfDlgWordFocused を True にしておくと、ボタンクリック後、ワードにフォーカス移動します。

[印刷]
[印刷]のダイアログを表示します。TPrintDialog を使用しています。
[プロパティ] は設定しても無効ですので使用不可となっています。
[新規作成]
このボタンのクリックイベントコードは1行もありません。
デフォルトでは非表示となっています
表示中の帳票の入力を全てクリアするとか、新規に帳票を開く等の利用を想定しています。
[開く]
TOpenDialog のダイアログを表示します。
表示中の文書が保存されていない場合は、保存確認のダイアログを表示します。
[上書き] 現在の文書名で上書き保存します。
[保存]
[名前を付けて保存] に相当します。保存ダイアログを表示します。
[縮小][拡大][標準] 表示サイズの変更ボタンです。[縮小] [拡大] は各々10%づつ変化します
[全体]
文書全体を表示します。
[頁幅]
頁幅を基準にした表示です。
[ヘルプ]
予備です。
[情報]
予備です。
[閉じる] フォームを閉じます。
表示中の文書が保存されていない場合は、閉じる前に保存確認のダイアログを表示します。




Word 2007 以降の文書の表示不正


Word 2007 以降では描画関係、特に図形類を描画した後に、下図のように文書が正常に表示されないことがあります。そのような場合は、描画終了後に下のようなコードを追加して、ワードそのものを再描画してみてください。改善される場合があります。
Windows 7 では描画関係が改良されているようです。この現象は今のところ発生していません。またDelphi 2009 よりも前のバージョンで作成したEXEでも発生しないようです。

本来描画の変更があった場合、OS なりそのアプリケーションが描画のメッセージを発生すべきですが、Windows XP 以前の Windows あるいは Word 2007 ではこのメッセージ処理に問題があるようです。


図1
文書の描画不正例
  • Windows XP(SP3) + Word 2007

リスト3
ワードのウィンドウの再描画を実行
    UpdateWindow(wdfWordHandle);




Word 2007 の文書ファイル


従来のワード文書を Word 2007 から導入された文書ファイルには変換できませんが、Word 2007 がインストールされてるい環境であれば、ワードの保存ダイアログを使用すれば可能です、
新規文書の作成はできますが、Word 2007 の文書の新規作成はできません。

Word 2007 がインストールされていない環境では、マイクロソフトのサイトから次のファイルをダウンロードしてインストールすると表示できるようになります。編集保存もできるようになります。





埋め込みオブジェクトと印刷プレビュー


埋め込みオブジェクトを開いたり、印刷プレビュー画面を表示すると、ワードのメニューやコマンドバーが表示されてしまいます。新たに文書を開き直せばワード操作フォームEx の状態となります。




[ Alt ] + [ TAB ] によるウィンドウ切り換え


[Alt] + [TAB] で他のウィンドウに切り換える場合、ワード本体に入力フォーカスがあると、キャプションバー (タイトルバー) のアクティデ・非アクティブ状態が正常に反映されません。




ワードのプロセスを強制終了


ワード操作フォームEx を利用したアプリケーションの開発では、エラーが発生した場合、ワードが画面上に表示されず、タスクバーにも存在しない状態となり、ワードのプロセスがメモリ上に残ってしまうことがあります。この状態でワード操作フォームExを起動すると「エラーが特定できません」などの表示が現れ、実行できななくなります。
添付の WordKill.exe を使用すると、このプロセスを強制終了することができます。なお、このプログラムは Windows NT では機能しません。




簡単な書類の作成に -- 雑感


最近は、官公庁が届出用紙や各種様式の書類を、ネット上で配布することが増えてきました。ワードで提供していることろもあります。そのような帳票のメタファイルを作成し、印刷プレビュー制御コンポーネントで入力画面を作成する方法もありますが、ワードで直接編集画面を作ることもできます。

長文を扱ったり、文章の変更に対応するには、ワードの方が便利です。データベースから宛先等を読み出して書き込む等の発送文書などにも利用できるかも知れません。
ワードは動作が遅いとの指摘もありますが、キーボードからの入力の速度に比べれば、作業中はあまり問題とならないのではないでしょうか。