Solitamente dopo il ceck per inserire solo numeri e virgola e questo lo fai con l'evento TextChanged di una TextField, hai sempre una stringa appunto per la presenza di una "," se ci sono decimali.
Con la funzione Replace poi fai il seguito.
Infine quando fai le tue operazioni matematiche e qui deve esserci il "." e devi ritornare alla visualizzazione con la "," usi la funzione Numberformat2(double,1,2,2,False).Replace(".", ",")
Qui si presume che ci debbano essere due decimali (€)
Esempio d'inserimento numeri e virgola
Sub txtdecimal_TextChanged (Old As String, New As String)
Dim txt As TextField = Sender
New = CeckIfIsDigit(New)
txt.Text = New
txt.SetSelection(txt.Text.Length, txt.Text.Length)
End Sub
Sub CeckIfIsDigit(new As String) As String
Dim su As ApacheSU
If new.Length = 0 Then Return ""
Dim i As Int = su.CountMatches(new, ",")
If i = 2 Then Return (new.SubString2(0, new.Length-1))
If IsNumber(new.SubString(new.Length-1)) Or new.EndsWith(",") Then
If new.Length = 1 And new.EndsWith(",") Then new = ""
Else
If new.Length = 1 Then
new = ""
Else
new = new.SubString2(0, new.Length-1)
End If
End If
Return new
End Sub
Un po elaborato ma devi essere sicuro che il dato inserito sia numericamente corretto.
Ci sono diversi modi anche meno elaborati ma a volte (anche se di rado) la scritta nel Textfield
entrava in un loop continuo e il dato sfarfallava.
Comunque è elaborato perchè se è già presente una virgola e ti sposti all'interno della Textfield con
i tasti freccia non devi avere la possibilità d'inserire un''altra virgola.
Ho visto che funzionava e non ci sono ritornato su ad affinare la Sub ma se avete voglia, giocateci
un pò e postate.
Naturalmente se era questo che s'intendeva non vorrei aver capito male.
Salute ragazzi.