Italian Come eliminare un Mask in una EditText

toro1950

Active Member
Licensed User
Ho una EditText che in base ad una scelta tramite radiobutton deve acettare una data oppure un testo
ho utilizzato il seguent codice
B4X:
Private Sub RadioB1_click
    Txtnascpet.Text=""
    Txtnascpet.InputType = Txtnascpet.INPUT_TYPE_NUMBERS
    mask.Initialize("Mask",Txtnascpet,"##/##/####")
    Txtnascpet.Hint= "Data di nascita"
End Sub

Private Sub RadioB2_click
    Txtnascpet.Text=""
    Txtnascpet.InputType = Txtnascpet.INPUT_TYPE_TEXT
' come eliminare il mask ?
    Txtnascpet.Hint ="Nome"
End Sub
1) Seleziono RadioB2, posso scrivere un nome tranquillamente , poi ci ripenso e selezione RadioB1 mi permette di scrivere una data tranquillamente
2) Selezione RadioB1 posso scrivere una data in modo corretto, poi ci ripenso e selezione RadioB2, resta attivato il mask e non mi permtte di scrivere correttamente un nome, come eliminare il mask introdotto con RadioB1
 

toro1950

Active Member
Licensed User
Ciao LucaMs mi sembra strano che non conosci quel Mask serve ad inserire automaticamente
le slashs durante l'inserimento di una data. Ho provato con Mask =null come mi hai suggerito
B4X:
Private Sub RadioB2_click
    Txtnascpet.Text=""
    Txtnascpet.InputType = Txtnascpet.INPUT_TYPE_TEXT
    mask = Null
    Txtnascpet.Hint ="Nome"
End Sub
ma non funziona, inserisce sempre le slashs, esempio se scrivo valeria mi scrive va/le/ria ma se provo a selezionare
il RadioB1 ( solo se ho selezionato prima RadioB2) l'app va in crash
sicuramente perchè è stato annullato il Mask quindi questo non il modo giusto per disattivare il Mask
speriamo che qualcu'altro possa aitarmi
 

Sagenut

Expert
Licensed User
Longtime User
Vado a sentimento senza aver testato
B4X:
Private Sub RadioB1_click
    Txtnascpet.Initialize("") 'Qui serve l'eventname già utilizzato dalla view
    Txtnascpet.Text=""
    Txtnascpet.InputType = Txtnascpet.INPUT_TYPE_NUMBERS
    mask.Initialize("Mask",Txtnascpet,"##/##/####")
    Txtnascpet.Hint= "Data di nascita"
End Sub

Private Sub RadioB2_click
    Txtnascpet.Initialize("") 'Qui serve l'eventname già utilizzato dalla view
    Txtnascpet.Text=""
    Txtnascpet.InputType = Txtnascpet.INPUT_TYPE_TEXT
' come eliminare il mask ?
    Txtnascpet.Hint ="Nome"
End Sub
Come scritto nel codice dovrai inserire l'eventname già in uso per quella view.
Se riesco a capire cosa è quel MASK (inteso come và dichiarato e se serva una libreria esterna) allora potrei anche testare.
Ove possibile è sempre necessario condividere tutto il codice coinvolto in una richiesta.
Altrimenti chi vuole aiutare rischia di perdere (se ha voglia) molto tempo per cercare di ricostruire l'esempio come potrebbe averlo l'utente.
E a volte questo LAVORO toglie la voglia o la possibilità di dare una mano.
 
Last edited:

sirjo66

Well-Known Member
Licensed User
Longtime User
Come ha detto Sagenut non avendo a disposizione l'oggetto "mask" è difficile aiutarti, bisognerebbe avere più info o un piccolo progetto su cui provare.
Comunque prova ad esempio a fare così e dicci cosa cambia:
B4X:
Private Sub RadioB2_click
    Txtnascpet.Initialize("") 'Qui serve l'eventname già utilizzato dalla view
    Txtnascpet.Text=""
    Txtnascpet.InputType = Txtnascpet.INPUT_TYPE_TEXT
    mask.Initialize("Mask",Txtnascpet,"&&&&&&&&&&")
    Txtnascpet.Hint ="Nome"
End Sub

oppure prova con
mask.Initialize("Mask",Txtnascpet,"")
 

Sagenut

Expert
Licensed User
Longtime User
Ho fatto diversi esperimenti e credo che purtroppo non ci sia soluzione.
Il Mask sembra unirsi in maniera indissolubile dalla sua EditText.
Non è stato previsto un metodo per separarli.
A questo punto la soluzione, secondo me, è di cambiare libreria oppure di visualizzare due diverse Editext secondo il RadioButton selezionato:
la Edittext con la Mask per il RadioB1 e una EditText pulita per il RadioB2.
Ovviamente posso sbagliarmi, probabile, ma non trovo altre cose da provare.

P.S. = @toro1950 se hai usato i RadioButton di base di B4A....... l'evento Click non c'è...............
 

toro1950

Active Member
Licensed User
Grazie a voi tutti, ho provato con mask.Initialize("Mask",Txtnascpet,"&&&&&&&&&&")
ma non mi permette di scrivere e neanche con mask.Initialize("Mask",Txtnascpet,"") che avevo già provato
la libreria che uso è la Mask che allego
Sagenut perchè i Radiobutton non hanno l'evento Click, allora con quale evento li selezione, con click funzionano,
quale altra libreria permette di usare un Mask per inserire la data con le slashs automatiche? magari con questa non ci sono problemi.
Su B4i non ho trovato una libreria Mask ed i controlli sulla data sono tanti invece con le slashs sono pochi.
Se non esite un'altra libreria dovò fare come suggerisce Sagenut.
 

Attachments

  • MakLib.zip
    1.5 KB · Views: 49

LucaMs

Expert
Licensed User
Longtime User
Sagenut perchè i Radiobutton non hanno l'evento Click, allora con quale evento li selezione, con click funzionano,
Se ti servono solo due "stati", "Data" / "qualunque testo", potresti usare una B4XSwitch, che è anche cross-platform.

Butto un occhio su quella libreria (benché i miei due neuroni hanno litigato finora su altro, che ho sospeso proprio per questo 😁)
 

LucaMs

Expert
Licensed User
Longtime User
come eliminare il mask introdotto con RadioB1
Ha il metodo unMask!
mask.unMask
e poi
mask.Mask("qui il formato", "qui il testo")

Puoi vederlo nell'help contestuale:
1771511795990.png
 

Sagenut

Expert
Licensed User
Longtime User
Il metodo unmask fornisce solo il testo non mascherato.
Ma non ho trovato un modo decente per applicarlo correttamente alla edittext.
 

Sagenut

Expert
Licensed User
Longtime User
Sagenut perchè i Radiobutton non hanno l'evento Click, allora con quale evento li selezione
B4X:
Private Sub RadioB1_CheckedChange(Checked As Boolean)
    If Checked Then
        edt.Text=""
        edt.InputType = edt.INPUT_TYPE_NUMBERS
        edt.Hint= "Data di nascita"
    End If
End Sub

Private Sub RadioB2_CheckedChange(Checked As Boolean)
    If Checked Then
        edt.Text=""
        edt.InputType = edt.INPUT_TYPE_TEXT
        edt.Hint ="Nome"
    End If
End Sub
 

Sagenut

Expert
Licensed User
Longtime User
Come esercizio stò cercando di ricreare la stessa libreria di @DonManfred (che era un wrap di un progetto di Github) utilizzando solo B4A e tentando di implementare un metodo per abilitare o disabilitare la maschera.
Se @toro1950 non ha fretta magari potrebbe farmi da tester...................... ammesso che io riesca.
 
Top