Aquí está el código donde intento configurar la interfaz IAdviseSink
implementada en mi clase TForm1
para capturar algunos eventos del documento MSWord recién creado. No tengo ningún error mientras se ejecuta el código, pero no puedo ver ningún evento, al guardar el documento o cerrarlo. ¿Cómo configurar IAdviseSink
para el documento MSWord correctamente?Configuración de IAdviseSink para capturar eventos de documentos de 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;
Con esa configuración, OnClose se activa aquí cuando cierro el documento, cuando guardo los fuegos 'OnRename' del documento, cuando guardo con un nuevo nombre de nuevo ' OnRename 'dispara. ¿Lo que da? –
'Ejemplo de OnClose' [aquí] (http://stackoverflow.com/a/2886747/243614), pero no he probado otros eventos, entonces ... –