Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - edit eingabe begrenzen
Psyko²k - Mi 06.04.05 18:24
Titel: edit eingabe begrenzen
Nochmals hi at alle :D
Meine letzte frage für heute...
Wie kann ich bei einem Edit fenster einstellen das nur zahlen eingeben werden können und nur begrenzte anzahl z.b nur 5 zahlen
Danke für jede Hilfe
Greets
friesi - Mi 06.04.05 18:37
Also die Maximale Länge kannst du im Objektinspektor mit "MaxLength" einstellen.
Um nur Zahlen einzugeben, musst du bei jedem Tastendruck eine Überprüfung durchfühen
OnKeyPress
Z.b. so:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TForm1.eingabeueberpruefung(Sender: TObject;var Key: Char); begin if ( not (Key in [#8,#45,#48..#57])) then begin Key := #0; end; end; |
Popov - Mi 06.04.05 18:47
Titel: Re: edit eingabe begrenzen
Psyko²k hat folgendes geschrieben: |
und nur begrenzte anzahl z.b nur 5 zahlen |
Psyko²k - Mi 06.04.05 19:32
Also mit der länge hab ich verstanden danke !!!
Aber mit dem OnKeyPress nicht ganz.
Wo steht das ? Oder muss ich die Prozedur erstellen.
Und Wo genau muss ich den Code eintippen von dir ?
Danke für eure Hilfen
friesi - Mi 06.04.05 19:38
Du musst bei deinem Edit im Objektinspektor bei Ereignisse einmal bei OnKeyPress doppelt klicken.
Dann kommt die Unit mit einer neuen Prozedur
In der packst du dann den Quelltext rein.
Gekko - Mi 06.07.05 01:24
Ich hätte zu dem Thema noch eine Frage:
Ich habe ein TSpinEdit in dem ich wirklich nur 0 bis 9 eintippen können soll
Zuerst hab ich das hier probiert:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.onlyallownumbers(Sender: TObject; var Key: Char); begin if ( not (key in [#48..#57])) then key := #0; end; |
Trotzdem ist es mir möglich in dem Spinedit entfernen zu drücken (nicht gut). Backspace funktioniert nicht (gut so). Dummerweise stürzt mein Programm ab, wenn da nix drin steht :roll:
Dann hab ich das hier probiert:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.onlyallownumbers(Sender: TObject; var Key: Char); begin if ord(key) = vk_delete then key := #0; if ( not (key in [#48..#57])) then key := #0; end; |
und zuguterletzt das hier:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.onlyallownumbers(Sender: TObject; var Key: Char); begin if (key < '0') and (key > '9') then key := #0; end; |
PS: Ich hab das alles auch mit einem normalem TEdit probiert, da kann ich auch Entfernen drücken, obwohl das eigentlich abgefangen werden sollte oder?
Delete - Mi 06.07.05 01:46
Wie wäre es, wenn du prüfst, ob da was drinne steht bevor du weiter mnachst?
Gekko - Mi 06.07.05 02:20
Danke für den Tipp!
Ich hab folgendes probiert, und bin leider auch daran gescheitert :(
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.onlyallownumbers(Sender: TObject; var Key: Char); begin if ( not (key in [#48..#57])) then key := #0; if TestTSpinEdit.Value = null then TestTSpinEdit.Value := 0; end; |
Damit will ich erreichen, dass das Feld direkt beim Tastendruck überprüft wird, ob nix drin ist und im Fall der Fälle korrigiert wird. Ich habe das zweit if Konstrukt auch beim OnChange Event des Widgets ausprobiert, wo es leider auch nicht funktioniert hat, und auch in der Subroutine, wo die Werte berechnet werden. Laut der Onlinehilfe von Delphi bedeuted null quasi nix, deshalb denke ich, dass das der richtige Weg wäre.
Warum ich das so haben will hat folgenden Grund: Ich bin dabei ein Programm zu basteln, das direkt bei der Eingabe die Caption von einem TLabel ändert (mit vorheriger Berechnungen der Ausgabe...).
Zuerst hatte ich ein Edit genommen, und auf den String '' geprüft, und den dann mit 0 "ausgebessert" (was auch funktioniert hat), allerdings find ich TSpinEdit einfach komfortabler.
Was mich dennoch an der ganzen Sache stört ist, dass anscheinend die Entfernen-Taste einen von mir ungewollten Sonderstatus besitzt, und das ist eigentlich der Punkt auf den ich hinaus will. :lol:
Pr0g - Mi 06.07.05 03:00
Warum machst du es nicht einfach so:
1.) Die Länge mit Hilfe der "MaxLength" Eigenschaft auf 5 Zeichen begrenzen.
2.) Im OnCreate der Form folgenden Code ausführe, um das Edit auf Zahlen zu begrenzen, also keine anderen Zeichen zuzulassen:
Delphi-Quelltext
1: 2: 3: 4:
| SetWindowLong( Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER); |
Wenn du dann noch den XP Style aktiviert hast (XP-Manifest, bzw. Unit "XPMan") bekommst du sogar bei der Eingabe eines ungültigen Zeichens noch eine nette Meldung von Windows in einer Sprechblase.
MfG Pr0g
Delete - Mi 06.07.05 03:14
Nutz das OnExit Ereignis, um die Eingabe zu validieren.
Gekko - Mi 06.07.05 09:11
Pr0g hat folgendes geschrieben: |
Warum machst du es nicht einfach so:
1.) Die Länge mit Hilfe der "MaxLength" Eigenschaft auf 5 Zeichen begrenzen.
2.) Im OnCreate der Form folgenden Code ausführe, um das Edit auf Zahlen zu begrenzen, also keine anderen Zeichen zuzulassen:
Delphi-Quelltext 1: 2: 3: 4:
| SetWindowLong( Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER); |
Wenn du dann noch den XP Style aktiviert hast (XP-Manifest, bzw. Unit "XPMan") bekommst du sogar bei der Eingabe eines ungültigen Zeichens noch eine nette Meldung von Windows in einer Sprechblase.
MfG Pr0g |
Danke für den Tipp, ich werde erst am Nachmittag dazukommen dies auszuprobieren. Ich programmiere mit Delphi 3 Professional (war bei einem Kindergartenbuch dabei und macht Windows 95 Programme), weil ich mir keine ~1.000 Euro (auch nicht die ~250 Euro der 7er Promo) für die .NET Professional leisten kann. Ich möchte nämlich in weiterer Folge ein Frontend für eine MySQL Datenbank schreiben, was mit der Personal entweder umständlich oder mit den mitgebrachten Mitteln nicht möglich ist (ein Webfrontend kommt nicht in Frage...). Deshalb werde ich wahrscheinlich mit der Unit XPMan Pech haben, oder?
Luckie hat folgendes geschrieben: |
Nutz das OnExit Ereignis, um die Eingabe zu validieren. |
Ich glaube Du hast nicht wirklich gelesen, dass (und vorallem warum) das nicht funktioniert, oder? :lol:
Trotzdem danke für den Tipp!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!