German leeres Eingabefeld verhindern

peternmb

Well-Known Member
Licensed User
Longtime User
HAllo,

gibt es eine Möglichkeit ein edit so zu konfigureren, dass auch wenn der Inhalt gelöscht wird (das Feld ist dann leer) immer die 0 eingetragen wird. Da ich den Inhalt diverser edit's in einer ini-Datei speichere möchte ich verhindern, dass die App abstürzt wenn das Feld leer ist.
B4X:
Dim edt1 As EditText
edt1.Initialize("edt1")
edt1.InputType=edt1.INPUT_TYPE_DECIMAL_NUMBERS
edt1.TextSize=20
pnl.AddView(edt1, 210dip,  5dip,60dip, 40dip)

... usw

ListVar.Add(edt1.Text)
File.writelist(File.DirInternal,"configAGZ.ini",ListVar)
 

klaus

Expert
Licensed User
Longtime User
Du hast mindest zwei Möglichkeiten:
B4X:
If edt1.Text = "" Then
    ListVar.Add("0")
Else
    ListVar.Add(edt1.Text)
End If
B4X:
Sub edt1_TextChanged (Old As String, New As String)
    If New = "" Then
        edt1.Text = 0
        edt1.SelectionStart = 1
    End If
End Sub
Diese zweite Möglichkeit hat zwar den Nachteil dass der Benutzer die 0 löschen muss wenn er eine neue Zahl eingeben will. Das könnte man in der Routine aber auch behandeln.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Danke, das mit dem Prüfen ist mir schon klar, habe ich mittlerweile auch gelöst:
B4X:
If IsNumber(edt1a.text) = False Then
   edt1a.Text = 0
End If

Ich wollte nur wissen, ob es evtl. einfacher geht - also schon beim Erstellen des edits festlegen, dass "die Null immer steht".

Ich kenne das z.B. von Reportgeneratoren, wo man festlegen kann, dass bei leeren Feldern automatisch eine 0 reinkommt oder auch umgekehrt, dass bei 0 das angezeigte Feld leer bleibt.
 

klaus

Expert
Licensed User
Longtime User
Beim Erstellen kannst Du direkt eine 0 reingeben.
B4X:
Dim edt1 As EditText
edt1.Initialize("edt1")
edt1.InputType=edt1.INPUT_TYPE_DECIMAL_NUMBERS
edt1.TextSize=20
pnl.AddView(edt1, 210dip,  5dip,60dip, 40dip)
edt1.Text="0"
Beste Grüsse.
 
Top