Controllo ortografico in textbox

di il
9 risposte

Controllo ortografico in textbox

Buongiorno,

su evento Afterupdate di una textbox ho inserito il comando "acCmdSpelling" come segue:

	DoCmd.SetWarnings False
    DoCmd.RunCommand acCmdSpelling
    DoCmd.SetWarnings True

Tale comando esegue il controllo su tutte le textbox, listbox e combobox della form, io vorrei invece limitarlo alla sola textbox dell'evento indicato.

Se e' fattibile, come dovrei operare?

Grazie in anticipo

9 Risposte

  • Re: Controllo ortografico in textbox

    Se fai una cosa simile:

    If Len(Me!NomeTuaTextBox.Value & vbNullstring)>0 Then
    	Me!NomeTuaTextBox.SetFocus
    	DoCmd.RunCommand acCmdSpelling
    End if
  • Re: Controllo ortografico in textbox

    Ciao Alex,

    la parte di codice che mi suggerisci era gia' anche nel mio codice (non l'avevo postata perche' non pensavo fosse importante).

    Pur passando il setfocus alla casella di testo interessata, il check dello spelling lo fa comunque su tutti i controlli della form...

  • Re: Controllo ortografico in textbox

    Sinceramente ho provato ed a me funziona regolarmente come dovrebbe, ovvero solo sul controllo che lo chiama.

    Sei sicuro di non avere un Loop 

    For each ctl in Me.Controls....

    da qualche parte che può disturbare...? Che ne so su Evento Current o altro...?

  • Re: Controllo ortografico in textbox

    Non ho cicli di loop nella form, ho del codice nell'evento Current ma non influisce sul controllo ortografico.

    Ho inserto due parole non a dizionario in due controlli diversi, ed ho messo il debug sull'evento Current ma non si attiva nel ciclo di correzione, per cui non influisce.

    Anche con il debug sull'evento sottostante non si attivano altri eventi, esegue il controllo sulla textbox, poi se ci sono parole che non riconosce in altre textbox le evidenzia, fino a completare il giro dei controlli. Non si attivano altri eventi....

    Il codice che uso e' il seguente:

    Private Sub sfrmRCctrMEMOtabRCdescrizioneconsuntivo_AfterUpdate()
    On Error GoTo Err_handler
    
        If Len(Me!sfrmRCctrMEMOtabRCdescrizioneconsuntivo.Value & vbNullString) > 0 Then
            Me!sfrmRCctrMEMOtabRCdescrizioneconsuntivo.SetFocus
            DoCmd.RunCommand acCmdSpelling
    
        End If
        
    Exit_Err_handler:
        Exit Sub
    
    Err_handler:
        MsgBox Err.Number & " " & Err.Description
        Resume Exit_Err_handler
    
    End Sub
    
  • Re: Controllo ortografico in textbox

    Aggiungo che ho provato a fare il controllo ortografico in un'altra form molto semplice con 4 textbox in croce; oltre a fare il check sull'update della textbox , lo fa anche sulle altre textobox e su tutti i record ciclandoli uno ad uno (la form ovviamente non era filtrata)

  • Re: Controllo ortografico in textbox

    Anche in questo caso, per aiutarti, forse è più semplice che posti un file di esempio.

  • Re: Controllo ortografico in textbox

    Ho creato un db di esempio: nella form ci sono tre caselle di testo, il codice di controllo dell'ortografia e' sull'evento afterupdate della textbox "Testo1".

    Inserendo parole non a dizionario nelle caselle Testo2 e Testo3 ed anche in altri records, eseguira' il controllo su tutte le textbox e tutti i records.

    Si puo' scaricare qui: https://we.tl/t-xhiCOWJpv0

    E' realizzato con Access 2007-2016

  • Re: Controllo ortografico in textbox

    Cambia il nome dei controlli e prova con il seguente codice

    Option Compare Database
    Option Explicit
    
    Private Sub txtTesto1_Exit(Cancel As Integer)
        ControlloOrtografico Me.txtTesto1
    End Sub
    
    Private Sub txtTesto2_Exit(Cancel As Integer)
        ControlloOrtografico Me.txtTesto2
    End Sub
    
    Private Sub txtTesto3_Exit(Cancel As Integer)
        ControlloOrtografico Me.txtTesto3
    End Sub
    
    Private Sub ControlloOrtografico(ctl As Control)
        DoCmd.SetWarnings False
        With ctl
            .SetFocus
            If Len(.Value & vbNullString) > 0 Then
                .SelStart = 1
                .SelLength = Len(.Value)
                DoCmd.RunCommand acCmdSpelling
                .SelLength = 0
            End If
        End With
        DoCmd.SetWarnings True
    End Sub
  • Re: Controllo ortografico in textbox

    Grazie Stifone per il suggerimento, funziona correttamente.

    Ho salvato la routine ControlloOrtografico in un modulo dichiarandola Public cosi' l'ho potuta richiamare all'occorrenza in diverse forms 

    Grazie ancora a tutti

Devi accedere o registrarti per scrivere nel forum
9 risposte