Geacht forum
Ik wil vanuit Delphi (XE2) een word document openen en daarna het event DocumentBeforeSave afvangen. Ik kan het gemaakte programma wel compileren, maar als ik het run en het document na wijzigingen opsla, komt het programma niet in de aangewezen eventhandler, maar krijg ik een access-violation.
De code die na een buttonklik doorlopen wordt, ziet er als volgt uit:
WordApplication := TWordApplication.Create(Self);
WordDocument := TWordDocument.Create(Self);
WordApplication.ConnectKind := ckNewInstance;
WordApplication.OnDocumentBeforeSave := WordDocumentBeforeSave;
WordApplication.OnQuit := WordAppQuit;
WordDocument.OnClose := DocumentOnClose;
WordApplication.Connect;
WordApplication.Visible := True;
WordDocument.ConnectTo(
WordApplication.Documents.Open('T:\xxx.docx',
EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam));
De eventhandlers zien er als volgt uit:
procedure TForm1.DocumentOnClose(ASender: TObject);
begin
ShowMessage('Close Document');
end;
procedure TForm1.WordDocumentBeforeSave(ASender: TObject;
Doc: WordDocument; var SaveAsUI, Cancel: WordBool);
begin
try
Cancel := false;
ShowMessage(Doc.Name + ' saved');
except
end;
end;
Probleem is dus, dat ik bij het saven van het geopende document in Word niet in WordDocumentBeforeSave terecht kom, maar een access-violation krijg. De eventhandlers DocumentOnClose en WordAppQuit werken wel.
Iemand enig idee, wat ik fout doe?
Groeten, jan
Bookmarks