Entwickler-Ecke

Sonstiges (Delphi) - Abfrage ob in EditFeld eine Zahl oder Text steht


mhxcm - Mi 06.02.08 15:44
Titel: Abfrage ob in EditFeld eine Zahl oder Text steht
Moin,

wie kann ich Abfragen ob in einem Editfeld eine Zahl steht oder Text. Möchte nämlich das ich nur Zahlen eingeben kann und bei allem anderen eine Fehlermeldung mit der Info das nur Zahlen erlaubt sind erscheint. Danach soll man dann nochmals die Möglichkeit haben was einzugeben....


benötigt ihr Quelltext? dann sagt bescheid!

mfg


Popov - Mi 06.02.08 16:02

03.) F: Wie kann man in einem Editfeld nur numerische Eingaben zulassen?
------------------------------------------------------------------------

A: Um nur Zahlen zuzulassen muss man im KeyPress Ereigniss des Editfelds das
Zeichen (Key) prüfen. Die Variable Key wird von der Prozedur geliefert und muß
nur noch geprüft werden. Entspricht das Zeichen nicht dem Filter, so wird Key
mit dem Sonderzeichen #0 (ASCII 0) überschrieben. ASCII 0 hat auf das Editfeld
keine Auswirkung. Um nur Zahlen zu akzeptieren reicht der Filter ['0'..'9']. Es
empfiehlt sich aber noch einige weitere Tasten zuzulassen, wie zum Beispiel
Zurücktaste (#8) oder Punkt für Nachkommastellen ('.').


Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); // Beispiel
begin 
  if not (Key in [#8'0'..'9''.']) then Key := #0
end;


Blackheart666 - Mi 06.02.08 16:02

Mal die Suche benutzen, die Frage kommt alle zwei Tage.
http://www.delphi-forum.de/search.php?search_id=355989621


mhxcm - Mi 06.02.08 16:06

@ Blackheart666: "Dein Link funktioniert tadelos" nur leider wird keine Ergebnisse angezeigt... und sry... dann hab ich wohl nicht richtig gesucht... suche nämlich eigentlich immer bevor ich was poste und habe mir schon viele post so erspart....

@ Popov: "Danke"


Hidden - Mi 06.02.08 16:59

user profile iconPopov hat folgendes geschrieben:
03.) F: Wie kann man in einem Editfeld nur numerische Eingaben zulassen?
------------------------------------------------------------------------

A: Um nur Zahlen zuzulassen muss man im KeyPress Ereigniss des Editfelds das
Zeichen (Key) prüfen. Die Variable Key wird von der Prozedur geliefert und muß
nur noch geprüft werden. Entspricht das Zeichen nicht dem Filter, so wird Key
mit dem Sonderzeichen #0 (ASCII 0) überschrieben. ASCII 0 hat auf das Editfeld
keine Auswirkung. Um nur Zahlen zu akzeptieren reicht der Filter ['0'..'9']. Es
empfiehlt sich aber noch einige weitere Tasten zuzulassen, wie zum Beispiel
Zurücktaste (#8) oder Punkt für Nachkommastellen ('.').


Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); // Beispiel
begin 
  if not (Key in [#8'0'..'9''.']) then Key := #0
end;


Hi,

Das stimmt leider nicht ganz.
Aus der Zwischenablage können noch beliebige Zeichen eingefügt werden,
zusätzlich empfiehlt sich daher ein Check beim Auslesen,
wenn schlimme Fehler bei falschen Eingaben folgen können.

Da kenne ich jedoch keinen Königsweg...
(Oder kann man eventuell strg + v in der Form abfangen, bevor es das TEdit erreicht?)

mfG,


Xong - Mi 06.02.08 17:03

http://www.delphipraxis.net/post624425.html#624425 ff.


Popov - Mi 06.02.08 17:36

user profile iconHidden hat folgendes geschrieben:
Das stimmt leider nicht ganz.


Doch. Das Prinzip stimmt. Wer mehr will, kann mehr hinzufügen. Wo ist das Problem?


Yogu - Mi 06.02.08 17:57

user profile iconHidden hat folgendes geschrieben:
kann man eventuell strg + v in der Form abfangen, bevor es das TEdit erreicht?

Erstelle ein Menü mit der ShortCut Strg+V, dann kannst du dir die Zwischenablage erst mal mit der Unit "clipbrd" anzeigen lassen, die Buchstaben etc. rausfiltern, und dann den Rest in das Edit einfügen.