![]() |
Kommazahlen in TEdit
Moin.
Ich möchte, dass die User im TEdit Kommazahlen (12,12, 13.29) eingeben. Die Möglichkeiten, die ich bisher ausprobiert habe sind irgendwie suboptimal: - Mit dem OnExit Event ein StrToFloat aufführen, wenn auf eine Exception gelaufen wird den Benutzer zu informieren, dass die Eingabe keine gültige Kommazahl ist. - Mit MaskEdit arbeiten. Das hat den Nachteil, dass man sehr genau vorgeben muss, wie die Zahl aussehen soll. Am Besten wäre eine Lösung, die nur Zahlen und das Komma im Editfeld erlaubt. Kennt da jemand was? Muss doch eigentlich Standard sein. Merci Manfred |
Re: Kommazahlen in TEdit
Erst googeln, dann fragen. Hier eine von vielen Möglichkeiten
Delphi-Quellcode:
procedure TMainForm.Edit1KeyPress(Sender: TObject; var Key: char);
begin // Nur Punkt, Komma, Zahlen und Backspace zulassen if NOT (Key in [#8, '0'..'9', ',', '.']) then Key := #0; // , bzw. . nur einmal eingeben if (key = ',') or (key = '.') then if pos(',', Edit1.Text) > 0 then begin key := #0; exit; end; // . in , wandeln if Key = '.' then Key := ','; end; |
Re: Kommazahlen in TEdit
Du könntest im OnKeyPress Key auswerten und bei ungültiger Eingabe (also weder Ziffer noch Decimalseparator) verwerfen. Das hat aber 2 Nachteile: der Decimalseparator kann so mehrfach eingegeben werden und über die Zwischenablage bekommt man trotzdem noch Quatsch hinein. Eine andere Möglichkeit, die mir spontan einfällt, wäre OnChange. Dort mit TryStrToFloat prüfen, ob etwas Plausibles drinsteht und ggf. durch eine vorher gemerkte Variable ersetzen.
|
Re: Kommazahlen in TEdit
|
Re: Kommazahlen in TEdit
man kann auch noch die folgenden zeilen..
Delphi-Quellcode:
zu:
// , bzw. . nur einmal eingeben
if (key = ',') or (key = '.') then if pos(',', Edit1.Text) > 0 then begin key := #0; exit; end;
Delphi-Quellcode:
..abändern, und somit die Procedure für mehrere OnKeyPress Ereignisse einsetzen (habe ich zB in meinem Programm verwendet, sieht bei 13 TEdits hübscher aus)
// , bzw. . nur einmal eingeben
if (key = ',') or (key = '.') then if pos(',', TEdit(Sender).Text) > 0 then begin key := #0; exit; end; lg,sign |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:39 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 by Thomas Breitkreuz