Re: Nur Zahlen im TEdit, aber auch Kommazahlen
Naja, bei einem Spinedit vielleicht noch.
Aber bei einer Float-Eingabe will ich schon vielleicht noch ein Komma und einen Exponenten eingeben. |
Re: Nur Zahlen im TEdit, aber auch Kommazahlen
Jo,
Jedi : TJVFloatEdit :wall: gruß oki |
Re: Nur Zahlen im TEdit, aber auch Kommazahlen
Zitat:
Wie muss ich im OnChange überprüfen`? Einfach mit try StrToFloat(Edit1.Text)[...] ? Zitat:
|
Re: Nur Zahlen im TEdit, aber auch Kommazahlen
naja, wenn Du bei OnChange überprüfen willst, kannst Du auch das mit OnKeyPress weglassen, sonst ist das irgendwie doppelt gemoppelt...
Übrigens, falls Du keine Fehlermeldung möchtest, kannst Du Dir auch mal StrToFloatDef anschauen. Falls Du doch eine Fehlermeldung haben willst, wenn per Copy&Paste eine falsche Eingabe gemacht wird, würde ich OnKeyPress lassen: dann machst Du halt TryStrToFloat oder was auch immer... Schau doch ein wenig in der Delphi-Hilfe herum und mach es dann so, wie Du es gerne hättest... //Nachtrag: Beim obige Code bei OnKeyPress kann es auch bei der Umwandlung in einen Float-Wert fehlschlagen, wenn zB zwei Kommas drin sind oder Komma und Punkt kombiniert werden oder was auch immer... |
Re: Nur Zahlen im TEdit, aber auch Kommazahlen
Zusatzkomponenten für sowas ? :shock: Das muß wirklich nicht sein. Mittlerweile dürfte bei einigen auch Turbo-Delphi grüßen.
OnKeyPress (TEdit) :
Delphi-Quellcode:
Und der Tip, erst einmal unnötigerweise unsinnige Eingaben zuzulassen, um sie dann wieder rückgängig zu machen, was soll denn das ? Wohl noch nichts von Verhütung gehört ? :mrgreen: Die paar Zeilen sind natürlich nur als Beispiel anzusehen und deckt nicht alle Sonderfälle ab. Ein fühtendes , müßte das Programm übrigens standardmäßig auch abdecken. Das kann jeder Taschenrechner für 2 EUR. Und . oder , das sollte auch egal sein, siehe Konstante DecimalSeparator.
if (Key in ['0'..'9',DecimalSeparator]) then begin
if key = DecimalSeparator then begin if Pos(DecimalSeparator, Text) > 0 then // keine zwei DecimalSeparators Key := #0 end |
Re: Nur Zahlen im TEdit, aber auch Kommazahlen
Dann kann man aber immernoch Buchstaben oder sonst was eingeben und Copy&Paste wurde auch nicht berücksichtigt.
Für Copy&Paste muss man dann schon in OnChange überprüfen, z.B. so
Delphi-Quellcode:
Ja, und dann kann man sich OnKeyPress wohl sparen...
procedure TForm1.Edit1Change(Sender: TObject);
var i: Integer; s: String; begin if Edit1.Text <> '' then begin s := Edit1.Text; i := 1; while i <= Length(s) do begin if (not (s[i] in ['0'..'9', DecimalSeparator])) or ((s[i] = DecimalSeparator) and (Pos(DecimalSeparator, s) <> i)) then Delete(s, i, 1) else Inc(i); end; if s <> Edit1.Text then Edit1.Text := s; end; end; //edit: Code verbessert! |
Re: Nur Zahlen im TEdit, aber auch Kommazahlen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz