2

デルファイフォームを作成してMSWordに新しいWord文書を追加し、ユーザーがテキストを挿入して文書を編集し、ファイルを保存してMS Wordから終了するのを待ってから、ファイル名とファイルへのパスを取得します。

 WordApp := CreateOleObject('Word.Application');
 WordApp.Visible := True;
 Doc := WordApp.Documents.add();

ユーザーがテキストを挿入してドキュメントを編集し、ファイルを保存してフォームを終了するのを待ちますMS Word THEN

Doc.Save;
DocName := Doc.Name;
Docpath := IncludeTrailingPathDelimiter(Doc.path) + DocName;

with ZipForge1 do
begin
  FileName := Zipfilename;
  OpenArchive;
  Options.StorePath := spNoPath;
  AddFiles(Docpath);
  CloseArchive;
end;
4

1 に答える 1

5

独自のイベントシンクを作成して、WordアプリケーションのイベントをリッスンすることができますOnQuit。ただし、アーリーバウンドCOMへの切り替えは簡単になります。にあるインポートタイプライブラリには、Word2000.pas必要なものがすべて含まれています。

  • TWordApplicationアプリケーションオブジェクトに使用します。
  • ハンドラーをアプリケーションオブジェクトのイベントに割り当てます。
  • 正確に何をしたいかに応じて、最も適切と思われるイベントはとOnDocumentBeforeCloseですOnQuit

説明のために、これが私が考案できる最も簡単な例です。

uses
  Word2000;

procedure TForm1.Button1Click(Sender: TObject);
var
  WordApp: TWordApplication;
begin
  WordApp := TWordApplication.Create(Self);
  WordApp.Visible := True;
  WordApp.Documents.Add(EmptyParam, EmptyParam, EmptyParam, EmptyParam);
  WordApp.OnQuit := WordAppQuit;
  WordApp.OnDocumentBeforeClose := WordDocumentBeforeClose;
end;

procedure TForm1.WordAppQuit(Sender: TObject);
begin
  ShowMessage('Word application quit');
end;

procedure TForm1.WordDocumentBeforeClose(ASender: TObject; 
  const Doc: WordDocument; var Cancel: WordBool);
begin
  ShowMessage(Doc.Name + ' closed');
end;
于 2013-01-28T09:11:38.533 に答える