![]() |
editfeld nur zahlen und komma?
hi, ich hab noch eine frage.. und zwar:
Delphi-Quellcode:
damit verhindere ich die eingabe von buchstaben usw. bzw. ich lasse nur noch "0-9" "," und backspace zu...
procedure TForm1.edteinkaufspreisKeyPress(Sender: TObject; var Key: Char);
begin If not(key in [#48..#57,#8, #44]) OR (pos(',',edteinkaufspreis.Text) < -1) then key := #0; end; jetzt wollt ich das noch (OR) so machen das die eingabe eines 2. kommas jedoch verhindert wird allerdings blockert das editfeld jetzt komplett nach der eingabe eines kommas und auch die zahlen sind nicht mehr eingebbar jetzt brauch ich mal nen denkanstoss oder codeschnipsel den ich mir mal anschauen kann... wie gesagt onkeypress soll nur "zahlen" "," und "backspace" zulassen jedoch kein zweites komma zulassen aber auch nicht blockieren, danke :) |
Re: editfeld nur zahlen und komma?
Welche Delphiversion?
Du könntest auch einen MaskEdit verwenden und dann eine entsprechende Editmaske setzen ( ab D2009 auch beim normalen Edit möglich) |
Re: editfeld nur zahlen und komma?
hab d7^^ aber danke für den hinweis :)
hab mein problem gerade gelöst... hier das ergebnis:
Delphi-Quellcode:
If not(key in [#48..#57,#8, #44])
then key := #0; If (Key = ',') and (edteinkaufspreis.Text = '') Then key := #0; If (Key = ',') and (pos(',',edteinkaufspreis.Text) > 0) Then key := #0; |
Re: editfeld nur zahlen und komma?
Moin, Moin,
m.E. sollte die pos()-Prüfung auf >1 lauten. Ein Komma soll zugelassen werden, ein zweites nicht... |
Re: editfeld nur zahlen und komma?
Zitat:
Ich habe gedacht, pos() gibt die Position des Zeichens zurück. Steht auf jeden fall in der OH: Zitat:
|
Re: editfeld nur zahlen und komma?
Genau, aber bei Strings fängt man bei '1' an zu zählen.
|
Re: editfeld nur zahlen und komma?
Zitat:
|
Re: editfeld nur zahlen und komma?
So wie es aussieht kann man per copy&paste noch andere Dinge in dein Editfeld eintragen.
|
Re: editfeld nur zahlen und komma?
So wie ich das sehe ist die einzig halbwegs sichere Möglichkeit, im OnChange zu versuchen, den Text in eine Zahl zu wandeln.
|
Re: editfeld nur zahlen und komma?
Zitat:
Einfach sowas wie Edit1.Text := inttostr(strtointdef(edit.text, 0)); ist dermaßen nervig, wenn man mal was falsches eingibt und plötzlich isses wieder null :( Oder stell dir vor, du hast in der zwischenablage zufälligerweise noch nen Buchstaben vor der Zahl ==> Man kanns nicht einfügen ;) Mein Vorschlag daher: einfärben, wenn der Inhalt falsch ist, und beim bestätigen des Dialogs dann auf den Fehler hinweisen (und Cursor reinsetzen) Es nervt auch wenn das bereits im OnExit geschieht, sodass man sklavisch gezwungen wird, gefälligst sofort nen Wert einzutragen da man sonst nicht rauskommt. :( Alles schon erlebt ;) Die beste Lösung ist eine, die den User nicht gängelt, und so möglichst wenig auffällt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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