German Eingabebegrenzung in EditText

fraureuther1

Member
Licensed User
Longtime User
Ich bin Elektroniker und habe Fernsteuerungen von Geräten immer in VisualBasic geschrieben.
Nun möchte ich es mal in AndroidBasic versuchen.
Einiges funktioniert schon recht gut, aber es fehlt an Routine.
Ich möchte Zahlen in ein Edittextfeld eingeben. Dabei soll nur eine bestimmte Anzahl von Zeichen möglich sein. Wie geht das?

MfG

Uhland
 

klaus

Expert
Licensed User
Longtime User
B4X:
EditText1.InputType = EditText1.INPUT_TYPE_NUMBERS
'
'
'
Sub EditText1_TextChanged (Old As String, New As String)
    If New.Length = 5 Then
        EditText1.Text = Old
    End If
End Sub
EditText1.INPUT_TYPE_NUMBERS kann im Designer definiert werdden.
Das Beispiel begrenz die Anzahl der Ziffern auf 4.
 

MaFu

Well-Known Member
Licensed User
Longtime User
Alternativ:
B4X:
Sub EditText1_TextChanged (Old As String, New As String)
    If New.Length > 4 Then
        EditText1.Text = New.SubString2(0,4)
    End If
End Sub
Das sollte dann auch funktionieren, wenn ein längerer Text über Copy/Paste eingefügt wird.
 

fraureuther1

Member
Licensed User
Longtime User
Hallo Klaus,

danke, da wäre ich nicht drauf gekommen, es funktioniert. Ich bin eben noch zu sehr an Visualbasic orientiert.
Jetzt weis ich auch mit dem "old" und "new" etwas anzufangen. ich hatte schon überlegt, für was das gut sein soll.
Meine nächste Frage wäre nun, gibt es auch die Möglichkeit, die Eingabe von rechts zu beginnen, wie eben bei Zahlen üblich.
Welche Funktion kann die Mid-Funktion ersetzen. Ich will in einem Text ein Zeichen durch ein anderes ersetzen, dessen Position ich kenne.

MfG

Uhland
 

klaus

Expert
Licensed User
Longtime User
txt1 = Mid(txt, i, j)
ergibt
txt1 = txt.SubString2(i, i + j)

Ich würde es so machen:
B4X:
Sub Replace(Original As String, New As String, Position As Int) As String
    Dim t1, t2 As String
   
    t1 = Original.SubString2(0, Position)
    t2 = Original.SubString2(Position + New.Length, Original.Length)
    Return t1 & New & t2
End Sub
 

fraureuther1

Member
Licensed User
Longtime User
danke Klaus, ich habe mich falsch ausgedrückt. Ich meinte die Mid-Anweisung Mid(text1,Start, Länge) = Text2.
Du hast es aber richtig erkannt. Ist aber schon aufwändig. Gut, in einer Sub brauche ich das nur einmal für 10 Ersetzungen.
Wie ist es mit der Zahleneingabe von rechts, ist das möglich?

MfG

Uhland
 
Top