Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi EditFeld nur bestimmte Werte zulassen (https://www.delphipraxis.net/141773-editfeld-nur-bestimmte-werte-zulassen.html)

netmario 15. Okt 2009 20:01


EditFeld nur bestimmte Werte zulassen
 
Hallo,
ich möchte dass man in dem EditFeld nur Zahlen und Kommas eingeben darf und keine Buchstaben. Vielen Dank.

mkinzler 15. Okt 2009 20:05

Re: EditFeld nur bestimmte Werte zulassen
 
TMaskEdit bzw. NumbersOnly Eigenschaft in neueren Delphiversionen oder im KeyDown-Event selber abprüfen.

netmario 15. Okt 2009 20:09

Re: EditFeld nur bestimmte Werte zulassen
 
Also ich besitze D7 und bin noch ein totaler Anfänger in Delphi, ich wüsste nicht einmal wie man eine Schleife macht die die ganze Zeit überprüft ob man nicht doch etwas anderes eingibt.

mkinzler 15. Okt 2009 20:11

Re: EditFeld nur bestimmte Werte zulassen
 
Dann nimm einen TMaskEdit, da kannst du eine Editmaske vorgeben

netmario 15. Okt 2009 20:13

Re: EditFeld nur bestimmte Werte zulassen
 
Ich kann das bei den Eigenschaften nicht sehen und ich wüßte nich wie ich das sonst anwenden können außer eine Schleife zu verwenden.

mkinzler 15. Okt 2009 20:17

Re: EditFeld nur bestimmte Werte zulassen
 
Das ist eine eigene Komponente. Die genannte Eigenschaft (NumbersOnly) ist von TEdit bei Delphi ab D11(?)

netmario 15. Okt 2009 20:26

Re: EditFeld nur bestimmte Werte zulassen
 
Wenns möglich ist würde ich gerne eine andere Möglichkeit in betracht ziehen, da ich AlphaLite verwende und dort diese Komponente nicht vorhanden ist.

mkinzler 15. Okt 2009 20:29

Re: EditFeld nur bestimmte Werte zulassen
 
Dann musst du wie gesagt, bei jedem Tastendruck ermittlen, ob die Eingabe angenommen werden soll oder nicht

netmario 15. Okt 2009 20:33

Re: EditFeld nur bestimmte Werte zulassen
 
Da bin ich überfragt, ich weiß weder wie man eine Schleife erstellt noch wie man einen Tastendruck erkennt. Aber ich lerne gerne dazu^^.

Chris.R 15. Okt 2009 20:44

Re: EditFeld nur bestimmte Werte zulassen
 
Hallo,

du kannst das Event OnKeyPress benutzen und falls das Zeichen nicht erlaubt ist, dann Key einfach auf #0 setzen.

Delphi-Quellcode:
procedure TForm1.DoOnEdit1KeyDown(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', #8]) then // #8 ist die Backspace Taste
    Key := #0;
end;
Evtl musst du noch abprüfen, ob das Komma nur einmal im Text ist.

Ciao Chris

netmario 16. Okt 2009 13:36

Re: EditFeld nur bestimmte Werte zulassen
 
Vielen Dank, das hat schon mal geklappt. Was ich nicht weiß ist wie ich das mit dem Komma mache dass es nur einmal geht. Bei einem Button wüsste ich das aber bei einer Taste nicht. Vielen Dank.

Klaus01 16. Okt 2009 13:42

Re: EditFeld nur bestimmte Werte zulassen
 
Delphi-Quellcode:
procedure TForm1.DoOnEdit1KeyDown(Sender: TObject; var Key: Char);
begin
  if not (Key in ['0'..'9', ',', #8]) then // #8 ist die Backspace Taste
    Key := #0;
  if (key = ',') and (pos(',',(sender as TEdit).text) >0) then
    key := #0;
end;
[ungetestet]

Grüße
Klaus

leddl 16. Okt 2009 13:45

Re: EditFeld nur bestimmte Werte zulassen
 
Nicht zu vergessen, dass das Komma weder an erster noch an letzter Stelle stehen darf ;)
Es sei denn natürlich, man fügt für diesen Fall dann vorne oder hinten noch eine 0 ein ;)

DeddyH 16. Okt 2009 13:47

Re: EditFeld nur bestimmte Werte zulassen
 
Ich möchte nur einmal anmerken, dass ein ungültiger Text über das Einfügen aus der Zwischenablage so weiterhin möglich ist. Evtl. sollte man die Prüfung ins OnChange-Ereignis verlagern.

netmario 16. Okt 2009 13:51

Re: EditFeld nur bestimmte Werte zulassen
 
Vielen Dank, das hat geklappt, jetzt wollte ich das gleiche mit meinem Kommabutton machen(mache gerade ein Taschenrechner), aber das wollte nicht so ganz hinhauen. Wie müsste ich es da denn machen?
Edit: Das ist mir gerade aufgefallen, wie überprüfe ich die Stelle des Kommas?

leddl 16. Okt 2009 13:53

Re: EditFeld nur bestimmte Werte zulassen
 
Zitat:

Zitat von netmario
Vielen Dank, das hat geklappt, jetzt wollte ich das gleiche mit meinem Kommabutton machen(mache gerade ein Taschenrechner), aber das wollte nicht so ganz hinhauen. Wie müsste ich es da denn machen?

Du willst verhindern, dass jemand in deinen "Kommabutton" etwas anderes als Zahlen eingibt? :gruebel:

netmario 16. Okt 2009 13:58

Re: EditFeld nur bestimmte Werte zulassen
 
Nein, dass man mehrere Kommas pro Eingabe eingeben kann.

leddl 16. Okt 2009 13:59

Re: EditFeld nur bestimmte Werte zulassen
 
Zitat:

Zitat von netmario
Nein, dass man mehrere Kommas pro Eingabe eingeben kann.

Na du musst doch beim Klick einfach nur prüfen, ob bereits eines existiert. Den Code hast du doch im Prinzip schon von Klaus01 bekommen.

mkinzler 16. Okt 2009 14:01

Re: EditFeld nur bestimmte Werte zulassen
 
Eigeninitiative scheint ihm verboten worden zu sein

leddl 16. Okt 2009 14:01

Re: EditFeld nur bestimmte Werte zulassen
 
Zitat:

Zitat von mkinzler
Eigeninitiative scheint ihm verboten worden zu sein

Jepp, das Gefühl habe ich schon den ganzen Thread über ;)

rwachtel 16. Okt 2009 14:02

Re: EditFeld nur bestimmte Werte zulassen
 
Zitat:

Zitat von leddl
[...] Den Code hast du doch im Prinzip schon von Klaus01 bekommen.

...und genau das ist (mal wieder) das Problem...

netmario 16. Okt 2009 14:05

Re: EditFeld nur bestimmte Werte zulassen
 
Also, ich bin ein totaler Anfänger von daher Entschuldigung wenn ich nicht alles hinbekomme, ich habe geschrieben, dass ich es versucht habe es aber nicht geklappt hat. Ich habe es bisher so gemacht, vllt ein bisschen unproffesionell aber ich bin ja noch ein Anfänger.
Delphi-Quellcode:
procedure TForm1.KommaClick(Sender: TObject);
begin
  if Kom=0 then
  sEdit1.Text:=sEdit1.Text+',';
  Kom:=1;
end;
Ich hatte es bisher mit einer Variablen überprüfen lassen, allerdings kann ich jetzt einmal mit der Tastatur ein Komma setzen und einmal per Mausklick, das will ich verhindern.

DeddyH 16. Okt 2009 14:06

Re: EditFeld nur bestimmte Werte zulassen
 
Du musst doch nur in beiden Ereignissen Deine Variable prüfen.

netmario 16. Okt 2009 14:24

Re: EditFeld nur bestimmte Werte zulassen
 
Das hat wieso auch immer nicht funktioniert.
Delphi-Quellcode:
  if (key = ',') and (pos(',',(sender as TEdit).text) >0) and (Kom=0) then
    key := #0;;

mkinzler 16. Okt 2009 14:28

Re: EditFeld nur bestimmte Werte zulassen
 
es müsste (kom>0) heissen

leddl 16. Okt 2009 14:44

Re: EditFeld nur bestimmte Werte zulassen
 
Zitat:

Zitat von netmario
Das hat wieso auch immer nicht funktioniert.
Delphi-Quellcode:
  if (key = ',') and (pos(',',(sender as TEdit).text) >0) and (Kom=0) then
    key := #0;;

Der Teil funktioniert so ja auch nur im Ereignis, für das Klaus01 dir den Quelltext gegeben hat ;) Du solltest schon versuchen, das für die Verwendung im Button zu adaptieren.

netmario 16. Okt 2009 14:50

Re: EditFeld nur bestimmte Werte zulassen
 
DeddyH meinte ich soll es so versuchen. >0 hat auch nichts gebracht. Ich fände es sehr nett von euch wenn ihr mir wenigstens einmal zeigen würdet wie man dass ohne Variable abprüft ob schon ein Komma vorhanden ist und dass man dann keins mehr hinzufügen kann. Vielen Dank.

DeddyH 16. Okt 2009 14:53

Re: EditFeld nur bestimmte Werte zulassen
 
Ich hab gemeint, dass Du Deine Variable in beiden Ereignissen prüfen bzw. setzen sollst. Pseudocode:
Code:
Wenn Zeichen ','
  Wenn Variable > 0
    Zeichen verwerfen
  Sonst
    Zeichen setzen
    Variable auf 1 setzen

netmario 16. Okt 2009 15:16

Re: EditFeld nur bestimmte Werte zulassen
 
Das hatte ich auch ausprobiert, da gabs soweit ich mich erinnern konnte aber Probleme, jetzt scheint es aber zu funktionieren, vielen Dank.

DeddyH 16. Okt 2009 15:21

Re: EditFeld nur bestimmte Werte zulassen
 
Im Zweifelsfall hilft bei logischen Problemen immer ein PAP bzw. ein Struktogramm.

netmario 16. Okt 2009 15:52

Re: EditFeld nur bestimmte Werte zulassen
 
Wie ist der KeyCode für Enter?
Und vielen Dank für deine guten Tipps Deddy.
[edit]Habs selber rausgefunden.[/edit]

rwachtel 16. Okt 2009 16:01

Re: EditFeld nur bestimmte Werte zulassen
 
VK_RETURN

netmario 16. Okt 2009 18:35

Re: EditFeld nur bestimmte Werte zulassen
 
#13 funktioniert auch, trotzdem danke.

rwachtel 16. Okt 2009 18:56

Re: EditFeld nur bestimmte Werte zulassen
 
Zitat:

Zitat von netmario
#13 funktioniert auch, trotzdem danke.

:wall: YMMD :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 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