12 de agosto de 2009

Corrección Ortográfica en VFP con el Diccionario de MSWord

El siguiente es un código que he adaptado, usando como base un mensaje de Luis María Guayán. Creo haber solucionado algunos problemas. Yo lo estoy usando con éxito. Espero que les sea de utilidad.
PUBLIC oForm
oForm = createobject("claseCorrector")
oForm.show()

DEFINE CLASS claseCorrector AS form
    Autocenter = .T.
    Top = 0
    Left = 0
    Height = 220
    Width = 377
    DoCreate = .T.
    Caption = "Corrector ortográfico de WORD"
    Name = "Form1"

ADD OBJECT edit1 AS editbox WITH ;
    Height = 170, ;
    Left = 10, ;
    TabIndex = 2, ;
    Top = 10, ;
    Width = 358, ;
    ControlSource = "", ;
    Name = "Edit1"

ADD OBJECT command1 AS commandbutton WITH ;
    Top = 185, ;
    Left = 285, ;
    Height = 27, ;
    Width = 84, ;
    Caption = "Ortografía", ;
    TabIndex = 1, ;
    Name = "Command1"

PROCEDURE Init
  LOCAL cString
   cString = "La gran mayoria de programadores Visual FoxPro se recisten a dejar " + ;
             "de programar en este lenguaje porque consideran que es una herramienta " + ;
             "muy poderosa, versátil y robusta que les permite crear aplicaciones " + ;
             "tan poderosas y hasta más estables que las creadas por otros lenguajes. " + ;
             "Incluso programadores que han tenido la oportunidad de desarrollar tanto " + ;
             "en Visual Basic.NET y Visual FoxPro 9.0 coinciden que FoxPro es largamente " + ;
             "superior en cuanto a practicidad y flexibilidad al momento de programar."
   thisform.edit1.Value = cString
ENDPROC

**********************************************************************************
* para incluír en los fuentes de cualquier programa, solo copiar el código       *
* del siguiente procedimiento en el evento "Click" del boton llame al corrector. *
* IMPORTANTE: cambiar el nombre del control que tiene el texto a corregir!       *
**********************************************************************************
PROCEDURE command1.Click
   LOCAL loWord, lnOldMousePointer, loControl
   loControl = Thisform.Edit1    && control que tiene el texto a corregir.
   lnOldMousePointer = loControl.Mousepointer
   loControl.Mousepointer = 11
      WAIT WINDOW NOWAIT "Iniciando la Corrección Ortográfica..."+CHR(13)+;
                         " Espere por favor" TIMEOUT 3
      IF VARTYPE( loWord ) <> 'O'
         loWord = CREATEOBJECT('word.application')
      ENDIF
      IF VARTYPE ( loWord ) = "O"
         loWord.documents.ADD()
         WITH loWord
            .documents(1).content = loControl.VALUE
            .windowstate = 2    && ventana minimizada
            .visible = .T.
            .documents(1).CheckSpelling()  &&Comenzando Corrección Ortográfica...
            .SELECTION.WholeStory
            IF .selection.text <> loControl.VALUE
               loControl.VALUE = .SELECTION.TEXT  
               WAIT WINDOW NOWAIT "Corrección Ortográfica Finalizada..."+CHR(13)+;
                                  " El texto fue reemplazado" TIMEOUT 3             
            ELSE
               WAIT WINDOW NOWAIT "Corrección Ortográfica Finalizada..."+CHR(13)+;
                                  " No se encontraron errores" TIMEOUT 3
            ENDIF
            .documents(1).CLOSE(.F.)
            .QUIT
         ENDWITH
         loWord = .NULL.
         RELEASE loWord
      ELSE
         MESSAGEBOX("Lo siento, no se puedo iniciar Word",48,_SCREEN.CAPTION)
         loControl.Mousepointer = lnOldMousePointer
         RETURN .F.
      ENDIF
   loControl.Mousepointer = lnOldMousePointer
ENDPROC

ENDDEFINE
Jorge Daniel Romero, Río Gallegos, Santa Cruz, Argentina

1 comentario :

  1. Soy un Medico y desarrolle un programa de historia clínica bastante completo, pero tengo un problema , que durante escribo en la historia clínica durante la consulta con el paciente al frente, cometo muchos errores de tipificación, deseo un corrector mientras escribo

    ResponderBorrar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.