Modifica casella di testo ma non catturo l'evento

di il
15 risposte

Modifica casella di testo ma non catturo l'evento

Miei cari,

da più punti del codice che scrivo ho necessità di cambiare un valore in una casella di testo.

Quando questo accade io su quell'evento ho bisogno di fare delle azioni per cui ho necessità di catturare l'evento stesso.

Le ho provate tutte ma non ho scoperto il modo per farlo.

Esiste un modo per farlo che a me sfugge?

saluti

15 Risposte

  • Re: Modifica casella di testo ma non catturo l'evento

    Ciao caro,

    05/05/2025 - antocuomo ha scritto:

    ho bisogno di fare delle azioni per cui ho necessità di catturare l'evento stesso.

    Le ho provate tutte ma non ho scoperto il modo per farlo.

    Esiste un modo per farlo che a me sfugge?

    eh... non riesci a catturarlo proprio perchè ti sfugge, è più veloce di te ?   ;-)

    A parte gli scherzi... 

    gli eventi della TextBox, come per esempio su change, after update, etc... ,  si attivano solo se è direttamente l'utente a manipolare la Textbox. 

    Una soluzione possibile è quella di spostare il codice eseguito dall'evento after update della TexBox, in una routine separata. 
    Ma potresti anche richiamare da codice direttamente la routine evento after update ... personalmente preferisco tenere separate le cose...

    Facciamo un esempio, poniamo di avere :

    • la TextBox di nome : TextBoxMyDate
    • l'evento su after update: Private Sub TextBoxMyDate_AfterUpdate()
    • una routine per i calcoli : Private Sub MyTextBoxMyDateCalculate()
    Option Compare Database
    Option Explicit
    
    
    ' TEXTBOX AFTER UPDATE EVENT
    Private Sub TextBoxMyDate_AfterUpdate()
        ' Execution of calculations
        Call MyTextBoxMyDateCalculate
    End Sub
    
    ' TEXTBOX EXECUTIONS OF CALCULATIONS
    Private Sub MyTextBoxMyDateCalculate()
        ' Here perform the calculations and operations
        ' that were performed in the Textbox after update event
        '.
        '..
        '....
    End Sub
    
    
    '----------------------------------------------------------------------------------------------------------
    
    ' ADESSO NEL FLUSSO DEL CODICE VAI A RICHIAMARE I CALCOLI E LE OPERAZIONI
    ' DA ESEGUIRE COME SE FOSSE STATO L'UTENTE AD AVER MANIPOLATO LA TEXTBOX CHE ATTIVEREBBE L'EVENTO AFTER UPDATE
    
    ' YOUR CODE
    Private Sub MyCode()
        ' Set textbox new value
        Me.TextBoxMyDate.Value = Date
        ' Invoke texbox execution of calculations
        Call MyTextBoxMyDateCalculate
    End Sub
    
    
    '----------------------------------------------------------------------------------------------------------
    ' ALTRO ESEMPIO SULL'EVENTO LOAD DELLA FORM
    
    ' FORM LOAD
    Private Sub Form_Load()
    
        ' Set textbox new value
        Me.TextBoxMyDate.Value = Date
        ' Invoke texbox execution of calculations
        Call MyTextBoxMyDateCalculate
        
    End Sub
    
    '----------------------------------------------------------------------------------------------------------
    ' Etc... Etc...

    .
    Per esempio con questo sistema puoi anche suddividere le operazioni da eseguire solo se è l'utente a manipolare la TEXTBOX  
    e solo le operazioni da eseguire se la TexBox viene manipolata direttamente da CODICE

    Insomma... è flessibile e ti lascia diverse possibilità di azioni da compiere potendo stabilire chi e cosa ha manipolato la textbox

  • Re: Modifica casella di testo ma non catturo l'evento

    Ciao By65Franco e grazie per avermi risposto.

    Prima ancora di implementare il tuo codice mi ponevo una domanda:

    Così facendo (in entrambi i casi) sono sempre io a creare l'evento che conduce a fare il calcolo sulla data; In un momento che stabilisco io e con la Data che fra l'altro ho inserito io stesso nella textBox.

    Praticamente non vedo l'effetto "evento esterno" che scatena improvvisamente, ovvero senza la mia consapevolezza, il codice in MyTextBoxMyDateCalculate.

    ..... . . a meno che non mi stia sfuggendo qualche passaggio. 

  • Re: Modifica casella di testo ma non catturo l'evento

    Non è chiaro quello che chiedi e forse è per questo che non riesci a farlo.

    05/05/2025 - antocuomo ha scritto:

    Quando questo accade 

    Come accade effettivamente nel tuo codice che modifichi la Textbox? Spiegati

  • Re: Modifica casella di testo ma non catturo l'evento

    Ti voglio evidenziare il mio problema:

    Ho due maschere M_A ed M_B entrambe caricate sul mio screen.

    Da M_A io scrivo un valore nella textbox di M_B e, sulla M_B mi aspetto una elaborazione. Questa operazione io la ripeto fino a quando non vedo su M_B il risultato che mi aspetto.

    Non sarebbe carino saltare tutte le volte dalla maschera A alla B per scatenare l'evento "su attivato" e vedere il risultato.

    Potrei anche chiudere e riaprire la maschera B ogni volta per attivare l'evento "on load", ma sarebbe ancor meno elegante.

    Cosa dovrei fare secondo te?

    antonio

  • Re: Modifica casella di testo ma non catturo l'evento

    06/05/2025 - antocuomo ha scritto:

    Ho due maschere M_A ed M_B entrambe caricate sul mio screen.

    Da M_A io scrivo un valore nella textbox di M_B e, sulla M_B

    Allora in questo caso , in riferimento a quanto ti avevo suggerito di spacchettare l'evento con le operazioni di calcolo,
    basterà rendere pubblica la routine di calcolo :

    ' TEXTBOX EXECUTIONS OF CALCULATIONS
    Public Sub MyTextBoxMyDateCalculate()
        ' Here perform the calculations and operations
        ' that were performed in the Textbox after update event
        '.
        '..
        '....
    End Sub

    A questo punto quando cambi il valore da codice da un altra form (in questo caso da form M_A) , aggiorni la textbox e poi richiami la routine public chee  segue i calcoli e le operazioni richieste:

    ' Change new value into form M_B 
    Forms!M_B.TextBoxInput.Value = NEW VALUE
    
    ' Invoke calculate event into form M_B
    Forms!M_B.MyTextBoxMyDateCalculate

    Prova a provare ... ;-)

  • Re: Modifica casella di testo ma non catturo l'evento

    Molto semplicemente faccio:

    da maschera (A) che sarebbe M_Specialisti, scrivo nell'altra maschera (B)  M_Pazienti (anch'essa caricata) nella casella di Testo33 un valore numerico  per leggere l'effetto.

                Forms!M_Pazienti!Testo33 = scelta
            	Forms!M_Pazienti.Requery
    'Purtroppo la modifica del Testo33 non viene vista dalla maschera B
  • Re: Modifica casella di testo ma non catturo l'evento

    06/05/2025 - antocuomo ha scritto:

    Molto semplicemente faccio:

    da maschera (A) che sarebbe M_Specialisti, scrivo nell'altra maschera (B)  M_Pazienti (anch'essa caricata) nella casella di Testo33 un valore numerico  per leggere l'effetto.

                Forms!M_Pazienti!Testo33 = scelta
            	Forms!M_Pazienti.Requery
    'Purtroppo la modifica del Testo33 non viene vista dalla maschera B

    Prova a provare meglio (più meglio)   ;-))

  • Re: Modifica casella di testo ma non catturo l'evento

    06/05/2025 - By65Franco ha scritto:

    Molto semplicemente faccio:

    no no no... molto semplicemente devi fare :

    E' questo che vuoi ottenere ?

    • FormAAA modifica la data in FormBBB
    • FormAAA invoca l'evento di calcolo che si trova in FormBBB

    .

    • FormBBB modifica la sua data
    • FormBBB esegue il suo calcolo
  • Re: Modifica casella di testo ma non catturo l'evento

    Mio caro Franco, parlandone con te ho capito soprattutto il valore di altre cose.

    Cionondimeno il dribbling fra la generazione di eventi è stato propizio.

    Infatti sfruttando l'evento di "Su attivazione" della maschera B che si verifica allorquando Testo33 viene modificato, ho potuto risvegliare l'evento di "dopo la modifica" della casella e sono andato avanti.

    Ti ringrazio tanto per il tuo intervento. Funziona.

    antonio

  • Re: Modifica casella di testo ma non catturo l'evento

    06/05/2025 - antocuomo ha scritto:

    Ti ringrazio tanto per il tuo intervento. Funziona.

    Ma io che ti avevo detto ???' prova a provare  ;-)

    e alla fine sei arrivato a meta. 

    bene!!!    bravo !!!

  • Re: Modifica casella di testo ma non catturo l'evento

    Però vedi, ho provato a fare come consigliavi ma il debuger mi ha bloccato. Mi dice che alla sub che ho chiamato mancano le referenze. BOH

    Per l'esattezza: Sub o Function non definita.

    La tua soluzione comunque mi piace molto e vorrei capire anche qual' è la differenza fra una Public ed una Private Sub

    ' Nella Form A	(Specialisti)
                Forms!M_Pazienti!Testo33 = scelta
                Call Performance
                
    ' Nella Form B	(Pazienti)
    Public Sub Performance()
        Me!Testo41 = 0
        Me!Testo42 = "FILTRO"
        Me.Requery
        Call aggiorna_testata
    End Sub
    
    
    
  • Re: Modifica casella di testo ma non catturo l'evento

    06/05/2025 - antocuomo ha scritto:

    call Performance

    La call la devi fare in questo modo da Form A

    Forms!M_Pazienti!Performance

    Quindi farai nella Form A :

    Forms!M_Pazienti!Testo33 = scelta
    Forms!M_Pazienti!Performance

    .

    e questo nellaForm B ( form M_Pazienti ) va bene così come hai fatto:

    Pubblic Sub Performance()

    bla
    bla
    bla

    end sub

  • Re: Modifica casella di testo ma non catturo l'evento

    Ora ho capito. Devo comunque indicare l'indirizzo della sub chiamata.

    Corro a correggere :).

  • Re: Modifica casella di testo ma non catturo l'evento

    OK! tutto a posto, magnifico.

    Unica cosa, mi ha chiesto il punto primo di Performance, e glielo dato.

    Forms!M_Pazienti.Performance

    bye

Devi accedere o registrarti per scrivere nel forum
15 risposte