Italian gestire eventi editext

lelelor

Member
Licensed User
Buongiorno, vorrei gestire l'input derivante da un lettore barcode in un edittext, in VB6 c'èl a possibilità di intercettare il carattere, esempio il crlf, suppongo ci sia anche in B4A ma non ho trovato nulla, solo attivare la procedura tramite un tasto comando .

mi spiego, a lettura del codice che finisce con crlf vorrei che mi si attivasse un evento button_click

è possibile?

Grazie
 

LucaMs

Expert
Licensed User
Longtime User
Non so usando un lettore di codici a barre ma le EditText hanno l'evento TextChanged.
Leggi l'ultimo carattere del parametro New, che è una stringa, e confrontalo con la costante CRLF. In caso di "uguaglianza" esegui una CallSub alla routine che ti interessa (CallSub(Me, NomeRoutine))
 

Xfood

Expert
Licensed User
io nel mio codice di un gestore terminalino ho messo questo,
e funziona alla grande

B4X:
Sub EdtCodice_EnterPressed
    If EdtCodice.Text.Trim.Length>0 Then
        CallSub(Me,BttConferma_Click)
    End If
End Sub
 

lelelor

Member
Licensed User
io nel mio codice di un gestore terminalino ho messo questo,
e funziona alla grande

B4X:
Sub EdtCodice_EnterPressed
    If EdtCodice.Text.Trim.Length>0 Then
        CallSub(Me,BttConferma_Click)
    End If
End Sub

Grazie per la risposta, mi spiego meglio, leggo il codice, lo vedo fisicamente sulla edittext ( non mi rende il crlf) , quando non ho più input mi deve attivare la sub desiderata
ora devo leggere e poi agire su di un bottone

ho collegato lo scanner ad un pc e si invia il crlf, quindi devo Solo intercettare l'ultimo carattere, è da poco che uso B4A, saranno banalità ma ...

Spero di essermi spiegato
 
Last edited:

LucaMs

Expert
Licensed User
Longtime User
e poi agire su di un bottone
Sarebbe meglio che chiamasse una routine, non la routine evento ButtonX_Click (anche se funziona lo stesso, ovviamente).

In B4X, la costante CRLF corrisponde al singolo carattere Chr(10), mentre in altri ambienti/linguaggi è Chr(13)Chr(10).

Prova ad utilizzare il codice che allego, in cui la ricezione del testo nella EditText è solo simulata.
Se non dovesse andare bene, prova impostando la variabile mEOL = CRLF.
 

Attachments

  • EditTextCRLFtest.zip
    14.3 KB · Views: 136

Xfood

Expert
Licensed User
Sarebbe meglio che chiamasse una routine, non la routine evento ButtonX_Click (anche se funziona lo stesso, ovviamente).

In B4X, la costante CRLF corrisponde al singolo carattere Chr(10), mentre in altri ambienti/linguaggi è Chr(13)Chr(10).

Prova ad utilizzare il codice che allego, in cui la ricezione del testo nella EditText è solo simulata.
Se non dovesse andare bene, prova impostando la variabile mEOL = CRLF.
scusa @LucaMs per mia curiosita' cosi secondo te potrebbe funzionare?

B4X:
Private Sub EditText1_TextChanged (Old As String, New As String)
    'If New.Length < mEOL.Length Then Return
    'Dim LastChar As String = New.SubString2(New.Length - mEOL.Length, New.Length)
    'EditText1.Text.Trim.EndsWith=mEOL
    
    If EditText1.Text.Trim.EndsWith(mEOL) Then
    'If LastChar = mEOL Then
        CallSub(Me, "MyRoutine")
    End If
End Sub
 

LucaMs

Expert
Licensed User
Longtime User
Assolutamente sì; temporaneamente (spero 😄) avevo dimenticato la funzione EndsWith
(a volte la fretta e il tentare di fare più cose contemporaneamente, quando non si ha più l'età...!).

Però non:

If EditText1.Text.Trim.EndsWith(mEOL) Then

ma:

If New.EndsWith(mEOL) Then
 

lelelor

Member
Licensed User
Assolutamente sì; temporaneamente (spero 😄) avevo dimenticato la funzione EndsWith
(a volte la fretta e il tentare di fare più cose contemporaneamente, quando non si ha più l'età...!).

Però non:

If EditText1.Text.Trim.EndsWith(mEOL) Then

ma:

If New.EndsWith(mEOL) Then
grazie mille @LucaMs e @Xfood, funziona

grazie ancora e buona serata
 
Top