![]() |
OnClose-Ereignis eines Word-Dokumentes abfangen?
Guten Morgen, alle miteinander!
Vielleicht kann mir jemand bei folgendem Problem helfen. Ich schreibe derzeit für meine Firma ein Word-AddIn (DLL). Jetzt stehe ich vor einem Problem, bei dem ich noch nicht genau weiß, wie ich es lösen soll: Wie kann man beim Erzeugen oder Öffnen eines Dokumentes in Word einen MessageHandler auf das OnClose-Ereignis dieses Dokumentes setzen? Folgender Code funktioniert NICHT: Deklaration des MessageHandlers:
Delphi-Quellcode:
Implementierung im DocumentOpen-Handler, der bereits mit der Word-Application verbunden ist
procedure MsgHandle_DocumentClose ( Sender: TObject );
Delphi-Quellcode:
Ebensowenig kann ich einfach
procedure TXConMag.MsgHandle_DocumentOpen(Sender: TObject;
var Doc: OleVariant); begin TWordDocument(WordApp.Documents.Item(Doc)).OnClose := MsgHandle_DocumentClose; end;
Delphi-Quellcode:
benutzen, da ich dann die Fehlermeldung bekomme, dass das Automatisierungs-Objekt diese Funktion nicht unterstütze...
Doc.OnClose := MsgHandle_DocumentClose;
:?: Matthias |
Re: OnClose-Ereignis eines Word-Dokumentes abfangen?
Guten Morgen!
Inzwischen habe ich einiges versucht, um im OnWindowDeactivate-Ereignis der Application, in Verbindung mit dem OnDocumentBeforeClose-Ereignis der Application etwas zusammenzustricken. Aber leider bin ich nicht wirklich weiter gekommen. Wenn also jemand eine Idee hat... Mein Abgabetermin rückt näher, und ich werde langsam ein wenig hektisch... :-D Matthias |
Re: OnClose-Ereignis eines Word-Dokumentes abfangen?
Hallo, an alle!
Habe das Problem mit dem OnClose-Ereignis gerade gelöst: Für jedes Dokument, das in Word erzeugt oder geöffnet wird, wird ohnehin von mir eine Umgebung angelegt (Objekt). Innerhalb dieser Umgebung habe ich ein Feld "FWordDok" eingefügt, das vom Typ TWordDocument ist. Wenn ich im Create meiner Umgebung folgenden Code einfüge:
Delphi-Quellcode:
habe ich eine Verbindung zwischen meinem Feld "FWordDok" und dem eigentlichen Dokument hergestellt. In das OnClose des TWordDocument kann ich mein NotifyEvent eintragen, und das Ereignis ist abgefangen!
constructor TEnv.Create(Dok: _Document; Word: PWordApplication; EventButton: TOfficeButtonClickEvent;
EventDok: TNotifyEvent); begin FOfficeButtonClass := TSimpleOfficeButton; FEvent := EventButton; FDok := Dok; [...] // WordDokument vorbereiten FWordDok := TWordDocument.Create ( nil ); FWordDok.ConnectTo (Dok as Word_TLB._Document); FWordDok.OnClose := EventDok; end; :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz