[WIN32][D7] OLEContainer et Word2007
Bonjour,
J'ai une appli en delphi 7 utilisant un TOLEContainer.
Ceci pour inclure un document Word dans la fenêtre de l'appli.
On peut ouvrir un document word, et cela supprime automatiquement la première image du document.
Ensuite on peut fermer le document et cela quitte word.
Ceci fonctionne parfaitement bien avec Word 2003.
Par contre avec Word 2007, je n'ai pas de message d'erreur, l'appli se ferme bien mais dans la liste des processus winword.exe reste présent.
J'ai par contre un message d'erreur "Exception EOLESysError" quand je lance l'appli par Delphi.
Voici le code du programme
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtnrs, Menus;
type
TForm1 = class(TForm)
oc_word: TOleContainer;
MainMenu1: TMainMenu;
Fichier1: TMenuItem;
Ouvrirlefichierword1: TMenuItem;
Fermerlefichierword1: TMenuItem;
procedure FormActivate(Sender: TObject);
procedure Ouvrirlefichierword1Click(Sender: TObject);
procedure Fermerlefichierword1Click(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormActivate(Sender: TObject);
begin
oc_word.Align := alClient;
end;
procedure TForm1.Ouvrirlefichierword1Click(Sender: TObject);
begin
oc_word.CreateObjectFromFile(ExtractFilePath(ParamStr(0)) + 'mondoc.doc',False);
oc_word.Doverb(ovPrimary);
//Pour corriger un bug qui fait mal se positionner les barres d'outils j'agrandis de 1 ma fenêtre
Height := Height + 1;
oc_word.OleObject.Application.ScreenUpdating := False;
//J'efface l'image 1 du document
oc_word.OleObject.Application.ActiveDocument.InlineShapes.Item(1).Delete;
oc_word.OleObject.Application.ScreenUpdating := True;
end;
procedure TForm1.Fermerlefichierword1Click(Sender: TObject);
begin
try
oc_word.Close;
oc_word.DestroyObject;
except
oc_word.DestroyObject;
end;
end;
end. |
L'erreur se produit au moment d'exécuter oc_word.Close;
Par contre se même programme fonctionne parfaitement avec word 2007 si je commente la ligne oc_word.OleObject.Application.ActiveDocument.InlineShapes.Item(1).Delete;
Avez-vous des idées ?
Merci pour vos réponses.