【发布时间】:2012-01-27 08:40:42
【问题描述】:
这是我尝试设置在我的TForm1 类中实现的IAdviseSink 接口的代码,用于捕获新创建的MSWord 文档的一些事件。代码运行时我没有任何错误,但是在保存文档或关闭文档时我无法捕获任何事件。
如何为 MSWord 文档正确设置IAdviseSink?
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;
【问题讨论】:
-
通过该设置,当我关闭文档时,OnClose 在这里很好地触发,当我保存文档时,'OnRename' 触发,当我再次使用新名称保存时,'OnRename' 触发。什么给了?
-
'OnClose' 示例here,但我还没有测试其他事件..
标签: delphi events ms-word ole-automation