Italian gestire eventi editext

lelelor

Active 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
 

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

Active 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: 308

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
 

lelelor

Active 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