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 Responses to “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

    • no estoy seguro que sea un error por estar mayúscula, al menos SpellCheckerFactorys no lo considera asi.

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

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)