PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → ActiveX et pilotage Word
ActiveX et pilotage Word
Débuté par Luc St-Yves, 11 oct. 2005 19:33 - 3 réponses
Posté le 11 octobre 2005 - 19:33
Bonjour à tous,

je tourne en rond depuis un petit bout de temps déjà et je ne trouve pas de réponses... J'ai fouillé tout le newsgroup et tout ce que j'y trouve est "regarde l'exemple fournit par Windev".

Voici mon problème, ou plutôt mes questions :
1) J'utilises la classe cWord et une fenêtre de pilotage Word. Tout foctionne bien sauf qu'il arrive que lorsqu'on ferme le document, l'appli ferme TOUTES les fenêtres word ouvertes.
J'ai déjà posté sur ce problème et on m'a répondu d'utiliser le paramètre du Constructeur (bRecycle = Faux).
Or, si je met bRecycle à faux, lorsque je ferme la fenêtre de pilotage, ça ne sauvegarde plus mes changements faits dans le document !!!

2) Donc j'essaie de comprendre le fonctionnement des ActiveX et des objets automation OLE... Je m'y perds. Existe-t-il de la doc quelque part ? Pourquoi le pilotage nécessite-t-il un ActiveX (Shell.Explorer) et que l'on déclare ensuite un objet cWord ?

3) Problème prise II : Pour régler mon problème, j'ai tenté de ne plus piloter Word et simplement de le lancer via ma classe cWord... Mais même si je mets >>visible = vrai, tout ce que ça fait est que je vois "clignoter" Word dans mon écran. Il se referme instantanément !

4) Y a-t-il quelqu'un qui sait comment on fait pour avoir de la documentation sur les ActiveX ??? J'ai bien essayé WDXView mais il arrête au premier niveau de méthode ! Donc si je veux savoir à quoi sert le paramètre dans ">>ActiveDocument>>Close(Faux) ", comment je fais ???

Si quelqu'un peu m'éclairer, j'ai l'impression de parler pour plusieurs qui n'osent pas s'avouer nuls dans ce domaine, et bien oui je l'avoue, les ActiveX, je ne l'ai pas du tout encore.

Luc
Posté le 12 octobre 2005 - 09:08
1) Le destructeur de la classe cWord fait appel à la méthode Quit. Celle-ci sert à fermer Word. Pour fermer le document actif en laissant Word ouvert, il faut utiliser la méthode Close. (cfr méthode Fermer de cWord). Verifiez si la fermeture de Word correspond à la destruction de votre objet cWord.

2) Il ne faut pas utiliser un ActiveX et un objet automation dynamique en même temps. C'est l'une ou l'autre méthode. La différence se situe uniquement dans l'instanciation de l'objet. La manipulation de celui-ci est identique dans les 2 cas.

3)Je n'ai pas rencontré ce genre de problème. Le clignotement dont tu parle concerne, je suppose, le bouton de rappel dans la barre des tâches. En cliquant dessus Word passe à l'avant plan et le clignotement s'arrête. Vérifie si tu n'as pas une fermeture de word qui suit ton code pour afficher Word.

4) Tu peux trouver toutes les informations sur le pilotage de word à l'adresse suivante (en anglais bien sur)
http://msdn.microsoft.com/archive/default.asp…
Il s'agit du pilotage de Word97 mais à partir de là tu peux trouver les informations pour les versions plus récentes. Regarde un peu plus haut dans le navigateur à gauche, tu verras Microsoft Office XP et Microsoft Office (general)
Posté le 13 octobre 2005 - 00:40
Bonjour,
Faites une recherche de VBAWRD?.HLP dans le répertoire d'installation
d'office.
Ce fichier contient une documentation sur les objets accessibles via OLE.
Les exemples fourni en VBA sont aisément traductible en Windev.

[DrCharly93] wdforge.org

"Luc St-Yves" <luc.st.yves@no_spamm.fempro.com> a écrit dans le message de
news: 434be298$1@news.pcsoft.fr...
Bonjour à tous,

je tourne en rond depuis un petit bout de temps déjà et je ne trouve pas
de réponses... J'ai fouillé tout le newsgroup et tout ce que j'y trouve
est "regarde l'exemple fournit par Windev".

Voici mon problème, ou plutôt mes questions :
1) J'utilises la classe cWord et une fenêtre de pilotage Word. Tout
foctionne bien sauf qu'il arrive que lorsqu'on ferme le document, l'appli
ferme TOUTES les fenêtres word ouvertes.
J'ai déjà posté sur ce problème et on m'a répondu d'utiliser le
paramètre du Constructeur (bRecycle = Faux).
Or, si je met bRecycle à faux, lorsque je ferme la fenêtre de pilotage,
ça ne sauvegarde plus mes changements faits dans le document !!!

2) Donc j'essaie de comprendre le fonctionnement des ActiveX et des objets
automation OLE... Je m'y perds. Existe-t-il de la doc quelque part ?
Pourquoi le pilotage nécessite-t-il un ActiveX (Shell.Explorer) et que
l'on déclare ensuite un objet cWord ?

3) Problème prise II : Pour régler mon problème, j'ai tenté de ne plus
piloter Word et simplement de le lancer via ma classe cWord... Mais même
si je mets >>visible = vrai, tout ce que ça fait est que je vois
"clignoter" Word dans mon écran. Il se referme instantanément !

4) Y a-t-il quelqu'un qui sait comment on fait pour avoir de la
documentation sur les ActiveX ??? J'ai bien essayé WDXView mais il arrête
au premier niveau de méthode ! Donc si je veux savoir à quoi sert le
paramètre dans ">>ActiveDocument>>Close(Faux) ", comment je fais ???

Si quelqu'un peu m'éclairer, j'ai l'impression de parler pour plusieurs
qui n'osent pas s'avouer nuls dans ce domaine, et bien oui je l'avoue, les
ActiveX, je ne l'ai pas du tout encore.

Luc
Posté le 13 octobre 2005 - 15:14
Merci Laurent et DrCharly !

Le nombre de réponses démontre soit que je ne suis pas seul et que plusieurs n'utilisent pas ou ne maitrisent pas si bien les ActiveX, ou soit que je suis le seul à ne pas comprendre et que tout le monde a trouvé la question futile ;)

Mais les réponses étaient de qualité. Et oui, il y a un Quit dans le destructeur de la classe. Voilà pourquoi Word fermait. Et voilà aussi pourquoi il ne faisait que clignoter lorsque je tentais de le lancer directement en utilisant cWord... Je déclarait une variable locale dans un événement alors aussitôt sorti de l'événement, la méthode destructeur refermait Word...

Merci les gars !

Luc