Italian [RISOLTO] [B4X] Pulire una editText premendo su un'altra

3uowiS

Active Member
Licensed User
Ciao a tutti, nel database ho 2 editText che uso come filtri di ricerca che funzionano in modo indipendente.
Vorrei fare in modo che se premo su una editText e inizio a digitare l'altra editText se già c'era scritto qualcosa si ripulisca.

Immagino che dovrei usare qualcosa tipo
B4X:
if edtText1... then 'non so quale proprietà selezionare per dirgli che premo per iniziare ad usarla
    edtText2.text = ""
end if

Ho provato per un po' con vari tipi di .qualcosa ma non sono riuscito ad ottenere niente.
 

Star-Dust

Expert
Licensed User
Longtime User
B4X:
Private Sub EditText1_TextChanged (Old As String, New As String)
    EditText2.Text=""
End Sub
 

3uowiS

Active Member
Licensed User
B4X:
Private Sub EditText1_TextChanged (Old As String, New As String)
    EditText2.Text=""
End Sub
@Star-Dust questa è la prima cosa che ho provato, ma cancella solo quando scrivo la prima lettera.
A me piacerebbe che cancellasse appena tocco la editText e compare la tastiera, quindi prima di iniziare a digitare. Ma a questo punto forse non si può...
 

Star-Dust

Expert
Licensed User
Longtime User
B4X:
Private Sub EditText1_FocusChanged (HasFocus As Boolean)
    If HasFocus Then EditText2.Text=""
End Sub
 

3uowiS

Active Member
Licensed User
B4X:
Private Sub EditText1_FocusChanged (HasFocus As Boolean)
    If HasFocus Then EditText2.Text=""
End Sub
Grazie mille! Questo è proprio quello che intendevo! 🙏

P.S: una domanda...perché in questo caso non ci vuole l'end if? Metterlo è sbagliato o indifferente?
 

giannimaione

Well-Known Member
Licensed User
Longtime User
perché in questo caso non ci vuole l'end if? Metterlo è sbagliato o indifferente?

B4X:
If HasFocus Then

    EditText2.Text  =""

End If

'è la stessa cosa di

If HasFocus Then EditText2.Text=""

in genere è preferibile il blocco "If ... End If"; è più facile leggere ed inoltre ti permette di "annidare" altre istruzioni o assegnazioni
B4X:
If .... Then
  bla bla bla
  ecc. ecc. ecc
  .... ... ...
 End If
 
Last edited:

3uowiS

Active Member
Licensed User
Grazie per la spiegazione, adesso è tutto chiaro!
Io sono un programmatore di macchine da maglieria nella vita, un tipo di programmazione che non ha niente a che vedere con quella informatica.
Mi sono approcciato a questo mondo da poco, senza nessuna conoscenza di Basic o qualsiasi altro tipo di programmazione informatica.
So di avere grosse lacune anche in cose basilari che un qualunque programmatore con un minimo di esperienza non avrebbe, ma spero di riuscire a colmare queste lacune con l'impegno, il tempo e con l'aiuto di questo splendido forum, grazie al quale ogni giorno apprendo qualcosa di nuovo!
Grazie ancora! 🙏
 

3uowiS

Active Member
Licensed User
Sotto a queste 2 editText ho un altro filtro che funziona tramite uno spinner.
Vorrei fare in modo che quando si preme su una editText se sullo spinner era già stata selezionata una voce, torni alla voce iniziale, la prima della lista per intenderci.
Ho provato aggiungendo sp.Clear alla routine dello Spinner prima di popolarlo e poi a richiamarla nell'EditText1_FocusChanged ma non funziona.

B4X:
Sub Spinner_team
    #If B4A
        Dim sp As Spinner = spnTeam
        sp.Clear
        sp.AddAll(modGlobals.lstTeamsList)
    #Else If B4I
        '...
    #End If 
End Sub

Private Sub EditText1_FocusChanged (HasFocus As Boolean)
    If HasFocus Then
        EditText2.Text=""
        Spinner_team 'per resettare lo spinner come di default
    End If
End Sub

Esiste un modo per farlo?
 

Star-Dust

Expert
Licensed User
Longtime User
Sotto a queste 2 editText ho un altro filtro che funziona tramite uno spinner.
Vorrei fare in modo che quando si preme su una editText se sullo spinner era già stata selezionata una voce, torni alla voce iniziale, la prima della lista per intenderci.
Ho provato aggiungendo sp.Clear alla routine dello Spinner prima di popolarlo e poi a richiamarla nell'EditText1_FocusChanged ma non funziona.

B4X:
Sub Spinner_team
    #If B4A
        Dim sp As Spinner = spnTeam
        sp.Clear
        sp.AddAll(modGlobals.lstTeamsList)
    #Else If B4I
        '...
    #End If
End Sub

Private Sub EditText1_FocusChanged (HasFocus As Boolean)
    If HasFocus Then
        EditText2.Text=""
        Spinner_team 'per resettare lo spinner come di default
    End If
End Sub

Esiste un modo per farlo?
Apri un nuovo thread
 
Top