Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi editfeld nur zahlen und komma? (https://www.delphipraxis.net/123431-editfeld-nur-zahlen-und-komma.html)

arcangel 1. Nov 2008 19:46


editfeld nur zahlen und komma?
 
hi, ich hab noch eine frage.. und zwar:
Delphi-Quellcode:
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;
damit verhindere ich die eingabe von buchstaben usw. bzw. ich lasse nur noch "0-9" "," und backspace zu...

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 :)

mkinzler 1. Nov 2008 19:55

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)

arcangel 1. Nov 2008 19:57

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;

taaktaak 1. Nov 2008 19:57

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...

bigben37 2. Nov 2008 08:48

Re: editfeld nur zahlen und komma?
 
Zitat:

Zitat von taaktaak
Moin, Moin,
m.E. sollte die pos()-Prüfung auf >1 lauten. Ein Komma soll zugelassen werden, ein zweites nicht...

Wieso das?
Ich habe gedacht, pos() gibt die Position des Zeichens zurück. Steht auf jeden fall in der OH:

Zitat:

Gibt den Indexwert des ersten Zeichens innerhalb des angegebenen Teil-Strings zurück, der in einem String vorkommt.

alzaimar 2. Nov 2008 08:54

Re: editfeld nur zahlen und komma?
 
Genau, aber bei Strings fängt man bei '1' an zu zählen.

Die Muhkuh 2. Nov 2008 09:22

Re: editfeld nur zahlen und komma?
 
Zitat:

Zitat von mkinzler
Welche Delphiversion?
Du könntest auch einen MaskEdit verwenden und dann eine entsprechende Editmaske setzen ( ab D2009 auch beim normalen Edit möglich)

Hmm? Ich hab nur eine Property "NumbersOnly" und diese lässt auch kein Komma zu.

SirThornberry 2. Nov 2008 09:27

Re: editfeld nur zahlen und komma?
 
So wie es aussieht kann man per copy&paste noch andere Dinge in dein Editfeld eintragen.

DeddyH 2. Nov 2008 10:12

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.

jfheins 2. Nov 2008 10:17

Re: editfeld nur zahlen und komma?
 
Zitat:

Zitat von DeddyH
So wie ich das sehe ist die einzig halbwegs sichere Möglichkeit, im OnChange zu versuchen, den Text in eine Zahl zu wandeln.

Dann aber bittte nur mit "Hintergrund wird hellrot, wenns nicht geht"

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 07:09 Uhr.
Seite 1 von 2  1 2      

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