Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 240737 (2173)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Eingabe bei createedit prüfen
Fernando
| 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
Alexander Schoenfeld
| 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
Heiko Reddingius
| 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
Heiko Reddingius
| Datum: 09.10.02 17:55 (webmaster@nvse.de) |
Nachtrag ... sorry, mein Fehler. Eine vollständige(?) Liste der möglichen Message für Editfelder findet sich unter http://www.text2music.com/hima/doc/command/descript/339.htm - die Seite ist zwar auf japanisch, aber die Messagenamen auf Englisch und auf die kommt es an. Gruß HR

| Zurück zur Übersicht