Abr 062022
 

Se trata de un módulo clase para aplicar un corrector ortográfico a un TextBox o RichTextBox, esto lo hace mediante la interfaz SpellCheckerFactorys, ésta está disponible a partir de Windows 8 y posteriores.

Si bien con algunos controles como el InkEdit y los RichTextbox (Richedit50W), con sólo un par de líneas de códigos estos ya pueden aplicar el corrector ortográfico, pero en el caso de los TextBox (Edit) hay que hacer todo un trabajo como el que se realizó en el módulo clase para que funcione de la misma forma. Vale aclarar que en el caso de los RichTextBox cuando tiene formato, puede que el comportamiento no sea el deseado, ya que las líneas rojas de error pueden desfasarse un poco si la fuente cambia.

Como pueden ver en la imagen, en el menú contextual aplica las opciones de corrección y otras funcionalidades como: omitir, eliminar palabras, añadir al diccionario y auto corrección, este último es para cambiar la palabra automáticamente por otra a media que es detectada.

No requiere ninguna dependencia, sólo Windows 8 y posteriores.

spellcheck.png

  5 comentarios en “Corrector ortográfico (Spell Check)”

  1. Dear Leandro.

    First, thank you very much for this code. It is amazing.

    I found strange behavior in Sub DrawErrorMarks.
    When the spelling error is in the last word, the wavy line drawing does not appear.

    The fact is that PFC returns -1 as if the position is beyond the end of the text.
    PFC = SendMessageW(mHwndEdit, EM_POSFROMCHAR, .lStart + .lLen, ByVal 0&)

    I did this workaround

    Dim sLastChar As String

    nFontHeight = GetTextHeight(hDC, «Áj»)
    lWidth = GetTextWidth(hDC, Right$(TextBox_GetText(mHwndEdit), 1))’save the width of the last char for later use


    PFC = SendMessageW(mHwndEdit, EM_POSFROMCHAR, .lStart + .lLen, ByVal 0&)
    If PFC = -1 Then
    PFC = SendMessageW(mHwndEdit, EM_POSFROMCHAR, .lStart + .lLen – 1, ByVal 0&)
    Else
    lWidth = 0
    End If

    • Thanks for your contribution, I have not been able to replicate the error you mention but if that is the solution I will take it into account for the next update. thanks for informing me.

  2. El error qque encontre es que no corrige palabras en mayusculas

  3. ¿Cómo elimino las líneas onduladas en una palabra cuando Sub DrawLine solo dibuja las líneas?

 Deja un comentario

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)