Đây là mã mà tôi cố gắng thiết lập giao diện IAdviseSink
được triển khai trong lớp TForm1
để bắt một số sự kiện của tài liệu MSWord mới được tạo. Tôi không có bất kỳ lỗi nào trong khi mã chạy, nhưng tôi không thể bắt bất kỳ sự kiện nào, trong khi lưu tài liệu hoặc đóng tài liệu. Làm cách nào để thiết lập IAdviseSink
cho tài liệu MSWord chính xác?Thiết lập IAdviseSink để bắt các sự kiện tài liệu 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;
Với thiết lập đó, OnClose kích hoạt ở đây tốt khi tôi đóng tài liệu, khi tôi lưu tài liệu 'OnRename' kích hoạt, khi tôi lưu lại với tên mới ' OnRename 'cháy. Đưa cái gì? –
Ví dụ 'OnClose' [ở đây] (http://stackoverflow.com/a/2886747/243614), nhưng tôi chưa thử nghiệm các sự kiện khác sau đó .. –