Mi sto trovando di fronte ad una necessità, quella di non uscire dal controllo TextBox, qualora, dopo la pressione del tasto TAB o dopo il click su un oggetto diverso della Form, si riscontrino errori rilevabili non durante la digitazione (es. incompatibilità con altri valori presenti in una diversa TextBox). Ho pensato di riconoscere gli eventuali errori dentro l'evento LostFocus della TextBox corrente e stoppare l'uscita dalla TextBox col comando STOP EVENT .
Ebbene, ho scoperto che il comando "STOP EVENT" non stoppa per niente il passaggio del controllo all'oggetto successivo. Probabilmente ciò succede perché quando si manifesta l'evento LostFocus il controllo del programma é già uscito dalla TextBox.
Ci sarebbe un'altra possibilità: il comando dovrebbe funzionare comunque, ma Gambas contiene un'anomalia a quel punto.
Completo il mio ragionamento col mio codice di esempio:
PUBLIC SUB SpeCoPre_LostFocus()
IF NOT b_SwErro 'cioé FALSE
TestEUR_SCP 'testa la intercompatibilità nei contenuti fra 'EUR.Text' e 'SpeCoPre.Text' e in caso di errore pone b_SwErro =TRUE
ENDIF
IF b_SwErro 'cioé TRUE
STOP EVENT
ENDIF
END
Sbaglio io o no?
:-\ :(
Ho trovato una soluzione pratica alternativa, abbandonando il comando STOP EVENT e richiamando al suo posto la proprietà SetFocus. Perciò il codice ora é:
PUBLIC SUB SpeCoPre_LostFocus()
'------------------------------------------
IF b_SwChange 'viene posto a TRUE dentro l'evento change ed ha lo scopo di eseguire il test solo se viene immesso nella TextBox un crt.
b_SwChange = FALSE
IF NOT b_SwErro 'cioé FALSE
TestEUR_SCP 'testa la intercompatibilità nei contenuti fra 'EUR.Text' e 'SpeCoPre.Text'
ENDIF
IF b_SwErro 'cioé TRUE
EUR.SetFocus 'é una TextBox diversa il cui contenuto va combinato con quella corrente
'' STOP EVENT
ENDIF
ENDIF
END
Così funziona tutto.
:D :D
Ciao.