# Punkt eingabe im Textfeld verhindern?



## Christoph1972 (24. März 2005)

Hallo,

ich bin neu hier und neu in der VB.6.0 programmierung. ( macht aber laune  )

1.
Wie kann ich es verhindern, das ein User in einem Textfeld einen Punkt eingibt?
Punkte werden ja bei berechnugen nicht berücksichtigt, wäre es möglich mein Programm so zu gestalten, das die eingabe von Punkt und Komma keinen unterschied macht? Das wäre benutzerfreundlicher.

2.
Wie kann ich die Reihenfolge bei sprüngen von Textfeld zu Textfeld mit der Tabulatortaste festlegen?

Gruß

Christoph


----------



## Filone (24. März 2005)

1. Indem Du das _Change-Event nutzt und den letzten Eintrag ermittelst und überprüfst.

2. Indem Du die 'TabIndex'-Eigenschaft einstellst.


----------



## Christoph1972 (25. März 2005)

Hallo,

könntest Du mir ein detailliertes Beispiel zu dem Change_Event geben? In meinem Buch kann ich leider nicht's finden, wie gesagt ich bin Anfänger.

Christoph


----------



## wincnc (25. März 2005)

Hallo, hier ein Beispiel:

```
Private Sub Text1_KeyPress(KeyAscii As Integer)
 If InStr("0123456789,", Chr$(KeyAscii)) = 0 And KeyAscii <> vbKeyBack Then KeyAscii = 0
End Sub
```
Bei dieser Methode werden nur Zahlen und Komma zugelassen.
Man kann aber mit kopieren und einfügen immer noch Text oder Punkte einfügen.
Deshalb solltest Du im LostFocus Ereignis noch prüfen, ob es sich um einen gültigen Wert handelt.
Beispiel:

```
Private Sub Text1_LostFocus()
 If Not IsNumeric(Text1) Then
  MsgBox "Bitte einen gültigen Wert eingeben !", vbInformation, "Fehler"
  Text1.SetFocus
 End If
End Sub
```


----------



## monsterPS (25. März 2005)

du kannst aber auch das _KeyPress ereignis nutzen und dann mit select case das KeyAscii abfragen und durch keyascii = 0 ersetzen....


```
Private Sub Text1_KeyPress(KeyAscii As Integer)
   select case keyascii
   	case  46
   		keyascii=0 
   end select
  End Sub
```


----------



## Filone (26. März 2005)

Oder eben das _Change-Ereignis, um auch kopierten Text zu überprüfen. 

Um auf numerische Werte zu überprüfen, kannst Du mit 'IsNumeric' oder 'Not IsNumeric' arbeiten.


----------



## Christoph1972 (27. März 2005)

Cool Danke das hift mir weiter! Aber nähere Infos zu dem Change_Event hätte ich schon gerne  

Gruß Christoph


----------



## Christoph1972 (27. März 2005)

Hallo,


diese die Methode gefällt mir erst mal gut:

Private Sub Text1_KeyPress(KeyAscii As Integer)
 If InStr("0123456789,", Chr$(KeyAscii)) = 0 And KeyAscii <> vbKeyBack Then KeyAscii = 0
End Sub

Nur habe ich sehr viele Textfelder, gibt es eine elegante Lösung wie ich diese Methode auf alle Textfelder übertragen kann? Oder muß ich jedem Feld die Eigenschaft einzeln verpassen. In meinem Buch steht was das das mit der KeyPreview geht, aber das funktioniert nicht. 

Schön wäre auch, wenn eine Meldung kommt wenn jemand auf die Punkttaste drückt, da unser altes Programm nur Punkteingaben zugelassen hat und die Kollegen nun aus Gewohnheit den Punkt nehmen. Hätte da wer ne Idee wie ich so einen Syntax mit einbinden kann?

Gruß
Christoph


----------

