Hi,
I need to change a procedure which creates an object of ms word and launch the spell checker. How would do this with libreoffice?.
thanks.
PROCEDURE PR_REVISA_ORTOGRAFIA (ITEM_NAME IN VARCHAR2) IS
lObAplicacion CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE ALMACENA LA APLICACIÓN (word)
lObDocumentos CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE GUARDA LA COLECCIÓN DE DOCUMENTOS
lObDocumento CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE GUARDA EL DOCUMENTO
lObSeleccion CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE GUARDA LA SELECCIÓN
lObPalabra CLIENT_OLE2.OBJ_TYPE; --OBJETO QUE VA ALMACENANDO LA PALABRA A REVISAR
lObArgumentos CLIENT_OLE2.LIST_TYPE;
lVPalabraRevisada VARCHAR2(4000);
lVTextoOriginal VARCHAR2(4000);
BEGIN
lVTextoOriginal := NAME_IN(ITEM_NAME);
-- SE CREA EL OBJETO WORD.APPLICATION
lObAplicacion := CLIENT_OLE2.CREATE_OBJ('Word.Application');
CLIENT_OLE2.SET_PROPERTY(lObAplicacion, 'VISIBLE', FALSE);
-- SE OBTIENE EL MANEJADOR DE COLECCIONES DE DOCUMENTOS
lObDocumentos := CLIENT_OLE2.GET_OBJ_PROPERTY(lObAplicacion, 'DOCUMENTS');
-- SE AÑADE UN NUEVO DOCUMENTO A LA COLLECIÓN DE DOCUMENTOS
lObDocumento := CLIENT_OLE2.INVOKE_OBJ(lObDocumentos, 'ADD');
-- SE OBTIENE EL MANEJADOR DEL OBJETO SELECCIÓN
lObSeleccion := CLIENT_OLE2.GET_OBJ_PROPERTY(lObAplicacion, 'SELECTION');
-- SE INSERTA EL CAMPO DE TEXTO EN EL DOCUMENTO
CLIENT_OLE2.SET_PROPERTY(lObSeleccion, 'TEXT', lVTextoOriginal);
-- SE OBTIENE EL MANEJADOR DEL DOCUMENTO ACTIVO
lObPalabra := CLIENT_OLE2.GET_OBJ_PROPERTY(lObAplicacion, 'ACTIVEDOCUMENT');
-- SE INVOCA AL CORRECTOR ORTOGRAFICO
CLIENT_OLE2.INVOKE(lObPalabra, 'CHECKSPELLING');
-- SE CORRIJE EL TEXTO DESDE EL DOCUMENTO
lVPalabraRevisada := CLIENT_OLE2.GET_CHAR_PROPERTY(lObSeleccion, 'TEXT');
-- SE REFORMATEA EL TEXTO DEVUELTO PARA QUE SE MUESTRE CORRECTAMENTE EN EL FORM
lVPalabraRevisada := substr(replace(lVPalabraRevisada,chr(13),chr(10)), 1, length(lVPalabraRevisada));
-- SE COPIA EL NUEVO TEXTO EN EL FORM
-- Controlamos la acción de Cancelar de la pantalla del corrector ortográfico del Word
IF lVPalabraRevisada LIKE CHR(10) OR LENGTH(lVPalabraRevisada) = 1 THEN
COPY(lVTextoOriginal,ITEM_NAME);
ELSE
COPY(lVPalabraRevisada,ITEM_NAME);
END IF;
-- CERRAMOS EL DOCUMENTO SIN GUARDAR LOS CAMBIOS
lObArgumentos := CLIENT_OLE2.CREATE_ARGLIST;
CLIENT_OLE2.ADD_ARG(lObArgumentos, 0);
CLIENT_OLE2.INVOKE(lObDocumento, 'CLOSE',lObArgumentos);
CLIENT_OLE2.DESTROY_ARGLIST(lObArgumentos);
-- LIBERAMOS LOS OBJETOS OLE
CLIENT_OLE2.RELEASE_OBJ(lObSeleccion);
CLIENT_OLE2.RELEASE_OBJ(lObPalabra);
CLIENT_OLE2.RELEASE_OBJ(lObDocumento);
CLIENT_OLE2.RELEASE_OBJ(lObDocumentos);
CLIENT_OLE2.INVOKE(lObAplicacion, 'QUIT');
CLIENT_OLE2.RELEASE_OBJ(lObAplicacion);
END PR_REVISA_ORTOGRAFIA;