Autor | Thema: Eingabe bei createedit prüfen | | Datum:09.10.02 16:47 
(cityelectronica@netcabo.pt) | |
Hallo
Ist es möglich die Eingabe beim Createeditfelder zur prüfen?
Also die Zahl die man eingibt muss ich bei der Eingabe testen ob es in einen gültigen Bereich ist.
Ich brauche es damit z. B. bei der Eingabe Irrtümlicherweise die Monatzahl nicht über 12 eingegeben werden kann.
Danke
Fernando
|
| | Datum:09.10.02 17:06 
(alexander.schoenfeld@chronologic.de) | |
Hallo Fernando,
hier ein kleines Beispiel:
CLS
Declare hEdit&, hBtn&
Let hEdit& = CreateEdit(%hWnd, "Hallo", 10, 10, 121, 21)
Let hBtn& = CreateButton(%hWnd, "Prüfe", 10, 50, 121, 21)
Declare Eingabe%
While 1
Waitinput
If GetFocus(hBtn&)
Let Eingabe% = Val(GetText$(hEdit&))
If Gt(Eingabe%, 0) AND Lt(Eingabe%, 13)
MessageBox("OK", "", 0)
Else
MessageBox("Bitte eine Zahl zwischen 1 und 12 eingeben", "Fehler", 16)
EndIf
EndIf
Wend
End
Es gibt übrigens noch eine Message mit der man veranlassen kann, das nur Zahlen in das Edit eingegeben werden können. Leider weiss ich selbige nicht auswendig, kann ich jedoch morgen abend nachreichen :)
--
Mit freundlichem Gruss / kind regards,
Alexander Schoenfeld
Email: alexander.schoenfeld@chronologic.de
|
| | Datum:09.10.02 17:52 
(webmaster@nvse.de) | |
Hi Fernando,
folgendes würde ich vorschlagen:
- begrenze das Feld auf eine bestimmte Länge. Um bei dem von Alexander genannten Beispiel zu bleiben, ergänze folgende Zeile vor dem WHILE:
SendMessage(hEdit&,$00C5,2,0)
Damit setzt Du das Limit auf zwei Zeichen für das entsprechende Eingabefeld und verhinderst damit schon mal Werte über 99 :-)
Außerdem müßtest Du die Prüfung noch automatisieren können - Alexander hat sie so gestaltet, daß Du sie seperat auslösen mußt. Über die Message em_GetModify sollte das ganze funktionieren. Ich bastel jetzt mal kurz einen Code zusammen, ohne Gewähr auf Garantie. Wieder basiernd auf dem vorherigen Beispiel kommt dann in die WHILE:
WaitInput
[...]
ElseIf @Equ(@SendMessage(hEdit&,$00B8,0,0)
SendMessage(hEdit&,$00B9,0,0)
[Abfrage und Fehlermeldungen nach Wunsch]
Eventuell sollte man die Routine noch etwas agressiver gestalten, zum Beispiel statt einer MessageBox einfach die Eingabe löschen (SetText hEdit&,""), mit dem Höchstwert überschreiben oder etwas in der Richtung, sonst bringt das ganze nicht. Wichtig ist nur, nach dem Auslesen (Message $00B8) den Wert wieder zurückzusetzen (Message $00B9), sonst gibt es bei mir Probleme :) Das Ding ist jetzt keine vollständige Lösung, aber in meinen Augen ein guter Ansatz.
Alternative: Wenn Du wirklich nur wenige Elemente, wie z.B. Monate eingeben willst, verwende einfach eine Choicebox - die ist garantiert sicher und im Endeffekt wahrscheinlich unkomplizierter :)
Viele Grüße,
Heiko
|
| |
|