vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Controls · TextBox & RichTextBox   |   VB-Versionen: VB4, VB5, VB617.09.03
TextBox für Betragseingaben

Dieser Tipp zeigt, welche Schritte notwendig sind, um eine TextBox korrekt als Betragseingabe-Box verwenden zu können.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  16.286 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Wird eine TextBox für eine Betragseingabe benötigt, sollte man darauf achten dass:

  1. nur Zahlen, Punkt (Komma) und ggf. das Minuszeichen eingegeben werden können
  2. ein Punkt (Komma) als Dezimalzeichen nur einmal eingegeben werden darf
  3. ein Minuszeichen nur als erstes Zeichen eingegeben werden darf

Die Abfrage der zulässigen Zeichen selbst erfolgt im KeyPress-Ereignis der TextBox:

Private Sub Text1_KeyPress(KeyAscii As Integer)
  With Text1
    Select Case KeyAscii
      Case 48 To 57, 46, 8, 13
        ' Zahlen, Punkt, Backspace und ENTER
 
      Case 44
        ' Aus Komma mach Punkt
        KeyAscii = 46
 
      Case 45
        ' Minuszeichen nur als erstes Zeichen zulassen
        If .SelStart > 0 Then KeyAscii = 0
 
      Case Else
        ' alle anderen Zeichen nicht erlaubt!
        KeyAscii = 0
    End Select
 
    ' Punkt darf nur 1 x eingegeben werden!
    If (KeyAscii = 46) And InStr(.Text, Chr$(KeyAscii)) > 0 Then
      KeyAscii = 0
    End If
  End With
End Sub

Und damit man obigen Code nicht immer und immer wieder in das KeyPress-Ereignis einfügen muss, erstellen wir einfach eine universelle Funktion mit zusätzlichen optionalen Parametern:

' Zulässige Zeichen für Betragseingaben
Public Sub CheckNumericInput( _
  oText As TextBox, _
  KeyAscii As Integer, _
  Optional ByVal bAllowNegativeValues As Boolean = True, _
  Optional ByVal sDecimalChar As String = ",")
 
  Dim nDecimal As Integer
 
  If sDecimalChar <> "" Then nDecimal = Asc(sDecimalChar)
 
  With oText
    Select Case KeyAscii
      Case 48 To 57, nDecimal, 8, 13
        ' Zahlen, Dezimalzeichen, Backspace und ENTER
 
      Case 44, 46
        ' Aus Komma mach Punkt bzw. umgekehrt
        KeyAscii = nDecimal
 
      Case 45
        ' Minuszeichen nur als erstes Zeichen zulassen
        If .SelStart > 0 Or Not bAllowNegativeValues Then KeyAscii = 0
 
      Case Else
        ' alle anderen Zeichen nicht erlaubt!
        KeyAscii = 0
    End Select
 
    ' Dezimalzeichen darf nur 1 x eingegeben werden!
    If (KeyAscii = nDecimal And nDecimal > 0) Then
      If InStr(.Text, Chr$(nDecimal)) > 0 Then KeyAscii = 0
    End If
  End With
End Sub

Beispiele für den Aufruf:

Private Sub Text1_KeyPress(KeyAscii As Integer)
  ' Negativ-Werte erlaubt
  ' Komma als Dezimaltrennzeichen verwenden
  CheckNumericInput Text1, KeyAscii
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
  ' Negativ-Werte erlaubt
  ' Punkt als Dezimaltrennzeichen verwenden
  CheckNumericInput Text1, KeyAscii, , "."
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
  ' Negativ-Werte erlaubt
  ' keine Nachkommastellen!
  CheckNumericInput Text1, KeyAscii, , ""
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
  ' nur positive Werte erlaubt
  ' Komma als Dezimaltrennzeichen verwenden
  CheckNumericInput Text1, KeyAscii, False
End Sub

Dieser Tipp wurde bereits 16.286 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel