Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi nur zahlen im editfeld als eingabe zulassen? (https://www.delphipraxis.net/54563-nur-zahlen-im-editfeld-als-eingabe-zulassen.html)

richard_boderich 6. Okt 2005 16:38


nur zahlen im editfeld als eingabe zulassen?
 
hallo allerseits,

ich moechte in einem editfeld nur ziffern und den dezimalpunkt als eingabe zulassen. und zwar moechte ich es so haben, das er verbotene zeichen zum
beispiel buchstaben erst gar nicht ins edit reinschreibt und nicht erst am ende beim enterdreucken prueft. welches ereignis kann man da nehmen. ich hab
schon die jedis probiert, aber die floatedits gefallen mir nich.

ich wuerde es gerne als menge erlaubter zeiten deklarieren
z.B.

['0..9','.'] und alle anderen zeichen sollen nicht ins edit geschrieben werden koennen. bräuchte dazu mal n ansatz :)

Richard

Luckie 6. Okt 2005 16:42

Re: nur zahlen im editfeld als eingabe zulassen?
 
Die Forensuche und besonders die Suche in der Codelib, sollten da zum Erfolg führen.

RavenIV 6. Okt 2005 16:45

Re: nur zahlen im editfeld als eingabe zulassen?
 
versuch mal den Maskedit (bei Komponenten unter "Zusätzlich"), da kann man Masken definieren.

ansonsten hat der TEdit ein Ereignis "onChange", das wird immer aufgerufen, wenn sich der Feldinhalt ändert.

oder du suchst bei torry.net eine passende Komponente...

PierreB 7. Okt 2005 15:19

Re: nur zahlen im editfeld als eingabe zulassen?
 
Zitat:

Zitat von RavenIV
versuch mal den Maskedit (bei Komponenten unter "Zusätzlich"), da kann man Masken definieren.

Gänzlich ungeeignet.

Das geht einfach mit nem ganz normalen TEdit. Im OnKeyPress prüfst du einfach nur ob die Taste eine von dir gewünschte ist, wenn nicht dann wird sie ignoriert.

Hier hast du mal den Code, nur Zahlen & der "." werden akzeptiert:
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in[#08,#46,#48..#57]) then key:=#0;
end;
Noch kurz zur Erklärung: #46 ist der Punkt, #48 bis #57 sind die Ziffern von 0 bis 9.
Die jeweiligen # - Werte kannst du z.B. aus jeder beliebigen ASCII-Code Tabelle ablesen. ;)

//Edit: Noch #08 hinzugefügt, wenn du zum nächsten Feld springen willst, #13 ist die Entertaste.

Matze 7. Okt 2005 15:21

Re: nur zahlen im editfeld als eingabe zulassen?
 
Ergänzend dazu: vergiss #8 (Backspace) nicht.

PierreB 7. Okt 2005 15:23

Re: nur zahlen im editfeld als eingabe zulassen?
 
Zitat:

Zitat von Matze
Ergänzend dazu: vergiss #8 (Backspace) nicht.

Stimmt, hab ich vergessen. :oops:

ich fügs mal in den obigen Code noch ein. :coder:

Sharky 7. Okt 2005 19:04

Re: nur zahlen im editfeld als eingabe zulassen?
 
Hai Richard,

warum soll den der Punkt (.) im Editfeld eingegeben werden können? Wenn es für Floats ist solltest Du den Delphi-Referenz durchsuchenDezimalseperator verwenden.

Pfoto 8. Okt 2005 08:29

Re: nur zahlen im editfeld als eingabe zulassen?
 
Falls du diese Funktion öfters brauchst lohnt sich eine Komponente:

TValidator Edit v.1.01
zu finden auf Torry.net

Das können ganz simpel die Buchstaben/Zahlen angegeben werden, die entweder erwünscht oder nicht erwünscht sind.

Gruß
Pfoto


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz