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.
Code: Copy
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)
 
Du hast mindest zwei Möglichkeiten:
Code: Copy
If edt1.Text = "" Then
    ListVar.Add("0")
Else
    ListVar.Add(edt1.Text)
End If
Code: Copy
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.
 
Danke, das mit dem Prüfen ist mir schon klar, habe ich mittlerweile auch gelöst:
Code: Copy
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.
 
Beim Erstellen kannst Du direkt eine 0 reingeben.
Code: Copy
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.
 
Back
Top