Page 1 of 1

Corrector ortográfico

PostPosted: Wed Jan 11, 2023 12:19 pm
by Garbi
Hola estoy implementando este código para corrector ortográfico para campos memos que he visto en otro tema (gracias a AJHM):

Code: Select all  Expand view
Function ORTOGRAFIA(Texto)
  Local oWord,oDoc,oTexto
  Local cText:=Texto

  oWord:=TOleAuto():New( "Word.Application" )
  oWord:Visible := .f.
  oWord:Documents:Add()
  oDoc := oWord:Get("ActiveDocument")

  oTexto := oWord:Selection()
  oTexto:Text := Texto

  oDoc:CheckSpelling()

  cText := oTexto:Text

  oDoc:Close(0)
  oWord:Quit()
  oTexto:=NIL
  oDoc:=NIL
  oWord:=NIL

  cText:=StrTran(cText,Chr(13),Chr(13)+Chr(10))  // No recuerdo por qué puse esta linea

  If !Empty(cText) // si cancelamos en el chequeo de ortografia, nos devuelve una cadena vacia
   Texto := cText
  Endif

Return Texto


No lo hago por defecto, sino con el botón derecho del campo memo añadiendo la opción de ortografía. (modificación de la clase mget.prg)

Pero me suceden dos cosas:

1- Solamente me corrige texto que este escrito en minúsculas, si esta en mayúsculas no hace la corrección, indica que es correcto.
2- En algunos puestos la ventana de ortografía no me la saca visible, hay que buscarla con alt+tabulador para hacerla visible.

He visto en la documentación de CheckSpelling() https://learn.microsoft.com/en-us/office/vba/api/word.document.checkspelling que por defecto ignora las mayúsculas pero no se como pasarle el parámetro para que no lo haga.

Agradecería alguna sugerencia.

Gracias a todos.

Re: Corrector ortográfico - Solucionado 1 parte

PostPosted: Wed Jan 11, 2023 12:50 pm
by Garbi
Para el que quiera usarlo, la forma de activar que te corrija la mayúsculas es:

Primero pones algo en minúsculas mal escrito y cuando te aparece la pantalla de Ortografía, elegimos opciones y desmarcamos la opción de "Omitir palabras en MAYÚSCULAS" y ya funciona para minúsculas y mayúsculas. He probado incluso reiniciando el ordenador y se queda desactivada la opción y sigue funcionando bien.

Lo de que la pantalla se quede oculta lo seguiré investigando. En todos los puestos tienen dos pantallas y creo que podría venir por ahí. Si averiguo algo lo pondré.

O se admiten sugerencias.

Gracias.

Re: Corrector ortográfico

PostPosted: Thu Jan 12, 2023 1:09 am
by Jimmy
hi,

as i can say CheckSpelling-Methode is "just" the Start Point
https://learn.microsoft.com/de-de/office/vba/api/word.document.checkspelling

you need to write a CLASS and include Method ::nextWord()
Code: Select all  Expand view
METHOD FwSpellChecker:checkSpelling( cString )
LOCAL nFirst, nLast, lCorrect, aSugg
LOCAL cWord := NIL

  ::reset()
  ::cString := cString
  lCorrect := .T.
  nFirst := 1
  nLast  := 1

  DO WHILE !Empty( cWord := ::nextWord( @nFirst, @nLast ) )
    IF ::oWord:checkSpelling( cWord )
      loop
    ENDIF
    aSugg := Array( 3 )
    aSugg[WRONGWORD]   := cWord
    aSugg[WORDPOS]     := nFirst
    AAdd( ::aSuggestions, aSugg )
  ENDDO

  IF NIL != ::aSuggestions
    lCorrect := .F.
  ENDIF
RETURN lCorrect


i do have a CLASS for Fivewin but it is based on Xbase++ Sample (copyright) so i can not post it
write me a private Email so i can help you

Re: Corrector ortográfico

PostPosted: Fri Jan 20, 2023 4:00 pm
by Garbi
Thanks, but that's how it works for me, the correction screens already work out fine when they start using it.