Italian B4J : textArea + tasto INVIO

MARCO CORRIAS

Active Member
Licensed User
Buongiorno a tutti,

vorrei che tramite un oggetto TextArea , digitando una frase , vorrei controllare la pressione
del tasto INVIO per avviare un SUB dove vado ad implementare la ricerca del testo appenda inserito nel TextArea.

Ho provato con la ricerca tramite il textchanged

Sub TextAreaFind_TextChanged (Old As String, New As String)

inserendo
B4X:
fd = TextAreaFind.Text.IndexOf(CRLF)
'''''Log (fd)
if fd<>-1 Then
    CmdFindCli_Click
End If
ma diventa complicato in quanto nella query mi inserisce CRLF a fine testo e la ricerca non va a buon fine.
Esiste un altro metodo per filtrare la pressione del tasto INVIO sul TextArea ?

Grazie
 

GIS

Active Member
Licensed User
ciao, ma perchè non metti un button es.(OK) . una volta finito di digitare la frase l'utente preme OK o quello che vuoi.
 

micro

Well-Known Member
Licensed User
Sub TextAreaFind_TextChanged (Old As String, New As String)
Ciao Marco
Se usi
B4X:
Sub TextAreaFind_Action
Questa sub è sollevata automaticamente alla pressione del tasto invio senza effettuare controlli sul tasto premuto.
Devi solo controllare comunque con Text.EndsWith(chr(13)) se l'invio è comunque inserito nel testo (ora non ricordo) e se è così lo rimuovi.

Edit
Perdonami io sto dando per scontato che sia per B4J
 

sirjo66

Well-Known Member
Licensed User
occhio che sui sistemi Windows il CRLF sono due caratteri, mentre su Android e i SO basati su Unix si usa solo un carattere il LF, ma per comodità sul IDE si scrive CRLF

Prova a vedere, una volta che hai tolto i due caratteri dalla coda della stringa che per errore non ci sia un carattere in meno di quello che ti aspettavi
 
Last edited:

micro

Well-Known Member
Licensed User
Chiedo scusa per l'errore precedente ma Action è valido solo per le TextField e non per le TextArea
quindi puoi fare:
B4X:
Sub TextArea1_TextChanged (Old As String, New As String)
    If New.EndsWith(Chr(10)) Then
        New = Old
        CallSub.........
    End If
End Sub
L'invio aggiunge solo un linefeed (chr(10)), il CR chr(13) non è presente.
 

MARCO CORRIAS

Active Member
Licensed User
Chiedo scusa per l'errore precedente ma Action è valido solo per le TextField e non per le TextArea
quindi puoi fare:
B4X:
Sub TextArea1_TextChanged (Old As String, New As String)
    If New.EndsWith(Chr(10)) Then
        New = Old
        CallSub.........
    End If
End Sub
L'invio aggiunge solo un linefeed (chr(10)), il CR chr(13) non è presente.
Grande ... ci provo subito
Grazie
 

LucaMs

Expert
Licensed User
Ciao Marco
Se usi
B4X:
Sub TextAreaFind_Action
Questa sub è sollevata automaticamente alla pressione del tasto invio senza effettuare controlli sul tasto premuto.
Devi solo controllare comunque con Text.EndsWith(chr(13)) se l'invio è comunque inserito nel testo (ora non ricordo) e se è così lo rimuovi.

Edit
Perdonami io sto dando per scontato che sia per B4J
Effettivamente c'è un evento Action ma sulle TextField (che poi è il tipo di view più adatto per immissione dati) e non viene nemmeno aggiunto un CRLF al testo.
 
Top