Amis,Vista accent problème lors de l'appel sort Microsoft Word vérifie d'Oracle Forms
En testant notre Oracle Forms application sur Vista j'ai trouvé un « défi » intéressant.
L'application peut appeler le vérificateur d'orthographe Microsoft Word pour effectuer une vérification orthographique sur un champ. Lorsqu'elle est invoquée, l'utilisateur voit apparaître la fenêtre de dialogue du vérificateur d'orthographe Microsoft Word standard. Le mot lui-même est invisible pour l'utilisateur. Le vérificateur d'orthographe est appelé à partir de Forms using Automation et la méthode utilisée est basée sur la note metalink: 295449.1 Comment intégrer le vérificateur d'orthographe MS Word avec des formulaires à l'aide de WebUtil.
Cela a bien fonctionné lorsqu'il est appelé en utilisant Windows XP et Office 2003.
Cependant quand même (inchangé) fonctionnalité est exécutée sur Vista, Microsoft Word orthographique fenêtre de dialogue Vérificateur apparaît derrière la fenêtre du navigateur ainsi que l'utilisateur il semble que rien ne s'est passé et la fonctionnalité ne fonctionne pas (Il n'y a aucune indication sur la barre des tâches Vista que le vérificateur orthographique a été invoqué)
Le problème se produit sur Vista avec Office 2007 et Office 2003. Je peux voir que le Le problème est dû à Vista car si j'utilise la même URL que celle utilisée pour lancer l'application Forms sur WindowsXP, la fenêtre de dialogue Microsoft Word Spell Checker apparaît ected, qui est en face.
Dans Vista j'ai essayé de définir le mode de compatibilité pour Office à Windows XP SP2 mais le problème persiste.
J'ai également essayé de définir explicitement ACTIVATE (comme vous pouvez le voir dans l'exemple de code ci-dessous) mais sans succès.
Est-ce que quelqu'un d'autre a couru à ça? Toute aide ou pointeur vers l'endroit où d'autres ont rencontré ce problème serait grandement apprécié!
Mes coordonnées de l'environnement sont:
Environnement Détails
Oracle Forms: 10.1.2.3 JRE: Sun 1.6.0_14 Database JRE: 10.2.0.3 Vista: Business Edition avec Service Pack 1 Bureau : 2003 ou 2007
le code (qui doit aller dans un côté client Oracle) utilisé pour invoquer le correcteur orthographique est:
PROCEDURE SPELL_CHECK (ITEM_NAME IN VARCHAR2) IS
MY_APPLICATION CLIENT_OLE2.OBJ_TYPE;
MY_DOCUMENTS CLIENT_OLE2.OBJ_TYPE;
MY_DOCUMENT CLIENT_OLE2.OBJ_TYPE;
MY_SELECTION CLIENT_OLE2.OBJ_TYPE;
GET_SPELL CLIENT_OLE2.OBJ_TYPE;
MY_SPELL CLIENT_OLE2.OBJ_TYPE;
ARGS CLIENT_OLE2.LIST_TYPE;
SPELL_CHECKED VARCHAR2(4000);
ORIG_TEXT VARCHAR2(4000);
BEGIN
ORIG_TEXT := ITEM_NAME;
-- CREATE WORD.APPLICATION OBJECT
MY_APPLICATION := CLIENT_OLE2.CREATE_OBJ('WORD.APPLICATION');
--CLIENT_OLE2.SET_PROPERTY(MY_APPLICATION, 'VISIBLE', FALSE);
CLIENT_OLE2.SET_PROPERTY(MY_APPLICATION, 'VISIBLE', TRUE);
--CLIENT_OLE2.INVOKE(MY_APPLICATION, 'ACTIVATE');
-- GET HANDLE FOR DOCUMENTS COLLECTION
MY_DOCUMENTS := CLIENT_OLE2.GET_OBJ_PROPERTY(MY_APPLICATION, 'DOCUMENTS');
-- ADD A NEW DOCUMENT TO THE DOCUMENTS COLLECTION
MY_DOCUMENT := CLIENT_OLE2.INVOKE_OBJ(MY_DOCUMENTS, 'ADD');
-- GET HANDLE FOR SELECTION OBJECT
MY_SELECTION := CLIENT_OLE2.GET_OBJ_PROPERTY(MY_APPLICATION, 'SELECTION');
-- INSERT THE TEXT FIELD INTO DOCUMENT
CLIENT_OLE2.SET_PROPERTY(MY_SELECTION, 'TEXT', ORIG_TEXT);
-- GET HANDLE FOR ACTIVE DOCUMENT
GET_SPELL := CLIENT_OLE2.GET_OBJ_PROPERTY(MY_APPLICATION, 'ACTIVEDOCUMENT');
-- INVOKE SPELL CHECKER
CLIENT_OLE2.INVOKE(GET_SPELL, 'CHECKSPELLING');
CLIENT_OLE2.INVOKE(MY_APPLICATION, 'ACTIVATE');
-- Added to handle a cancel request.
CLIENT_OLE2.INVOKE(MY_SELECTION,'WholeStory');
CLIENT_OLE2.INVOKE(MY_SELECTION,'Copy');
-- GET CHECKED TEXT FROM DOCUMENT
SPELL_CHECKED := CLIENT_OLE2.GET_CHAR_PROPERTY(MY_SELECTION, 'TEXT');
-- REFORMAT RETURN TEXT TO DISPLAY CORRECTLY IN FORMS
SPELL_CHECKED := substr(replace(SPELL_CHECKED,chr(13),chr(10)), 1, length(SPELL_CHECKED));
-- COPY NEW TEXT IN THE FORM
COPY(SPELL_CHECKED,ITEM_NAME);
-- CLOSE THE DOCUMENT WITHOUT SAVING
ARGS := CLIENT_OLE2.CREATE_ARGLIST;
CLIENT_OLE2.ADD_ARG(ARGS, 0);
CLIENT_OLE2.INVOKE(MY_DOCUMENT, 'CLOSE',ARGS);
CLIENT_OLE2.DESTROY_ARGLIST(ARGS);
-- RELEASE THE OLE OBJECTS
CLIENT_OLE2.RELEASE_OBJ(MY_SELECTION);
CLIENT_OLE2.RELEASE_OBJ(GET_SPELL);
CLIENT_OLE2.RELEASE_OBJ(MY_DOCUMENT);
CLIENT_OLE2.RELEASE_OBJ(MY_DOCUMENTS);
CLIENT_OLE2.INVOKE(MY_APPLICATION, 'QUIT');
CLIENT_OLE2.RELEASE_OBJ(MY_APPLICATION);
END;
EDIT: 10/08/2009
Ce lien http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_23085081.html détaille le même problème (mais cette fois au lieu des formes d'oracle contrôle mot, il est ms accès) Malheureusement, je ne vois pas la réponse (s'il y a un c'est)
EDIT: 12/08/2009
Tout le lien aux Etats expert-échange est que cela est un problème de vista - comme je ne savais pas que!