これは、新しく作成された MSWord ドキュメントのいくつかのイベントをキャッチするためIAdviseSink
に、クラスに実装されたインターフェイスをセットアップしようとするコードです。TForm1
コードの実行中にエラーは発生しませんが、ドキュメントを保存または閉じるときにイベントをキャッチできません。IAdviseSink
MSWord ドキュメントを正しくセットアップする方法
var
Form1 : TForm1;
doc_ole_obj : IOleObject;
word : IDispatch;
Connection: LongInt;
implementation
//------------ Setup IAdviseSink
procedure TForm1.Setup;
begin
word := CreateOleObject('Word.Application');
OleVariant(word).Visible := True;
IUnknown(OleVariant(word).Documents.Open('file.doc')).QueryInterface(IOleObject,doc_ole_obj);
doc_ole_obj.Advise(IAdviseSink(Self), Connection);
end;
//------------- catch Sink events
procedure TForm1.OnSave;
begin
Caption := 'saved at ' + TimeToStr(Now);
end;