Oracle Forms Builder - Migration MS to LibreOffice [closed]

asked 2013-10-15 10:34:51 +0200

this post is marked as community wiki

This post is a wiki. Anyone with karma >75 is welcome to improve it.

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;
edit retag flag offensive reopen merge delete

Closed for the following reason question is not relevant or outdated by Alex Kemp
close date 2015-10-05 00:41:16.451152