Evento lostfocus

di il
6 risposte

Evento lostfocus

Buongiorno avrei questo problema, ho una maschera con varie text_box, sull evento lost_focus di una di queste faccio un controllo richiamando una routine e tutto funziona bene, sulla stessa maschera o anche un button che all'evento click chiude la maschera (Docmd.close). Il problema si presenta quando avendo lo stato attivo sulla text_box che richiama la routine faccio click col mause sul button access mi esegue prima la rutine della text_box. Io vorrei che mi eseguisse subito l evento click del button. Ossia se decido di chiudere la maschera mi ignorasse gli eventi della text_box. Spero de essere stato chiaro, ringrazio se qualcuno può aiutarmi, Grazie.

6 Risposte

  • Re: Evento lostfocus

    Ovvio accada... l'evento LostFocus si genera a prescindere quindi devi mascherare l'esecuzione del codice inserendo un flag Boolean dichiarato a livello di Form che attivi su click del Button di chiusura...
    
    Private bInhibitOnClose As Boolean
    
    Private Sub Nomebutton_Click()
       bInhibitOnClose=True
    End sub
    
    Private Sub NomeTextBox_LostFocus()
       If not bInhibitOnClose then
         ..... qui il tuo codice
       end if
    End Sub
    
  • Re: Evento lostfocus

    Grazie Alex, ho provato come da tuo suggerimento ma non mi funziona, ho creato una variabile a livello di form booleana, ma quando premo click sun button non mi modifica il valore di suddetta variabile, o meglio lo modifica ma sempre dopo aver eseguito l evento Lost_Focus della Text_Box, pper il momento ho risolto spostando la routine dall evento Lost_Focus della Text_Box all evento click di un altro Button che mi salva il record. Ma mi piacerebbe comunque trovare un modo per far eseguire la routine all uscita della Text_Box. Grazie
  • Re: Evento lostfocus

    Aleio ha scritto:


    mi piacerebbe comunque trovare un modo per far eseguire la routine all uscita della Text_Box
    E se fosse che hai sbagliato evento? Prova l'evento "Su uscita" (Exit)...magari ti facilita la gestione del tutto...
  • Re: Evento lostfocus

    Purtroppo, l'evento LostFocus o Exit, si verificano PRIMA che il Nuovo Controllo, nel tuo caso il Buttton, lo riceva... quindi di fatto non esiste alcun sistema per capire chi lo dovrà prendere, ma in quel momento sai solo che la tua TextBox lo perderà.

    La soluzione di fatto non c'è se non gestire il GotFocus di tutti gli altri controlli e su quello controllare se il PreviousControl era la tua textBox...!

    Si risolve in questo:
    Su tutti i controlli Attivabili nell'Evento "Su Attivato", ad esclusione del Button CLOSE, vai ad inserire =checkTextExit()

    Nella Form scrivi una funzione [checkTextExit]
    
    Private Function checkTextExit()
       If Screen.PreviousControl is Me!NomeTextBox Then
           ' Esegui il codice
       End If
    End Sub
    Non è elegantissimo... ma temo non ci sia altro modo, oltre a quanto hai fatto già... che però se non salvi...
  • Re: Evento lostfocus

    Grazie innanzitutto per l'aiuto, Osvaldo ho provato anche sull evento exit ma non cambia, Alex ho provato con il tuo suggerimento è funziona Lo utilizzerò così perché mi piace di più fare il controllo una volta uscito dal controllo piuttosto che sul click del button 'SALVA' grazie ancora.
  • Re: Evento lostfocus

    OsvaldoLaviosa ha scritto:


    Aleio ha scritto:


    mi piacerebbe comunque trovare un modo per far eseguire la routine all uscita della Text_Box
    E se fosse che hai sbagliato evento? Prova l'evento "Su uscita" (Exit)...magari ti facilita la gestione del tutto...
    Temo la risposta sia stata molto affrettata... non ti è forse ben chiara la normale gestione e sequenza degli eventi.
Devi accedere o registrarti per scrivere nel forum
6 risposte