
Envoyé par
ShaiLeTroll
OleContainer1 ? c'est Word ?
Je m'explique.
J'ai un canevas (Ma template), qui est dans un fichier .rtf, et je le charge dans un OleContainer, pour l'afficher à l'utilisateur.
Je lui donne la possibilité de le modifier. Lorsque il clique sur le bouton modifier, je passe mon OleContainer en mode modification :
OleContainer1.DoVerb(ovShow);
Le problème c'est que les modifications ne sont pas répercutées sur le fichier source (Mon fichier .rtf). Comme si il m'ouvrait juste le contenu du OleContainer dans une application Word.
Alors pour remédier à ça, j'ai proposé de mettre un autre bouton, "btnEnregistrer". Ce bouton va servir à enregistrer le nouveau contenu du OleContainer, dans mon fichier source (.rtf) (afin de répercuter les changements) :
OleContainer1.SaveAsDocument('C:\Canevas.rtf');
Et c'est là que j'ai rencontré un autre problème. Cette fois c'est lors de l'utilisation du composant EkRtf. Il ne reconnait plus mon "Canevas.rtf" comme un fichier rtf. Il m'affiche alors "Template is not RTF file".
J'ai fait des recherches, et j'ai compris que la commande SaveAsDocument n'enregistrait pas dans le format natif, mais elle ajoutait des choses dans l'entête du fichier, ce qui faisait que le fichier .rtf ne soit plus reconnu en tant que tel.
Alors j'ai trouvé la commande :
OleContainer1.OleObject.SaveAs(Filename := 'C:\Canevas.rtf', Format := wdFormatRTF ); //Excusez moi si je me trompe sur les paramètre, car je les ai pas en tête
Avec ça, ça se compile, mais ça donne l'erreur suivante à l'exécution : Interface non supportée
J'ai fait quelques recherches, et apparemment pour utiliser cette commande il faut charger d'autre ActiveX (Peut être que je me trompe là aussi).
Voilà, j'espère vous avoir donner assez d'informations pour comprendre mon problème.
Je compte sur vous,
Merci d'avance.
Partager