Oto kod, w którym próbuję skonfigurować interfejs IAdviseSink
zaimplementowany w mojej klasie TForm1
w celu przechwycenia niektórych zdarzeń z nowo utworzonego dokumentu MSWord. Nie mam żadnych błędów podczas działania kodu, ale nie mogę przechwycić żadnego zdarzenia, podczas gdy zapisz dokument lub go zamknij. How to to setup IAdviseSink
dla dokumentu MSWord poprawnie?Konfiguracja IAdviseSink do przechwytywania zdarzeń dokumentu MSWorda
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;
Przy tej konfiguracji, włącza OnClose pożary tutaj, gdy zamykam dokument, kiedy zapisuję pożegnanie dokumentu "OnRename", kiedy ponownie zapisuję nową nazwę " OnRename "uruchamia się. Co daje? –
Przykład "OnClose" [tutaj] (http://stackoverflow.com/a/2886747/243614), ale nie testowałem innych zdarzeń. –