Hallo! Wie beschränke ich am Einfachsten die Eingabe von anderen Zeichen als "0123456789" und "," in eine Edit-Feld? Gibt es eine andere Möglichkeit als bei der on change Methode ein Funktion zu schreiben, die jeweils die letzte Eingabe prüft?
Announcement
Collapse
No announcement yet.
Edit-Feld auf Zahlen und Komma beschränken
Collapse
X
-
Hallo Björn,
ich lasse bei einigen Feldern auch nur Zahleneingaben zu und löse das folgendermassen:
<PRE>
procedure TStammdatenForm.DOTEditKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then Key := #0
else
if not (Key in [#8,#46,#48 .. #57]) then Key := #0
end;
</PRE>
Ich persönlich verzichte auf eine Formatierung (z.B Tausendertrennzeichen) das es - zumindest bei mir - probleme gibt wenn das Trennzeichen bei Änderung des Feldinhaltes nicht überschrieben wird
Gruß
Heik
Comment
-
Hallo zusammen,
Heikos Lösungsansatz funktioniert leider schon nicht mehr, wenn man etwas aus der Zwischenablage in das Edit kopiert. Und was ist mit mehrfacher Eingabe von Kommas?
Ich verzichte komplett auf Überprüfungen während der Eingabe, sondern überprüfe die Daten erst, wenn der User den OK-Button klickt und gebe dann entsprechende Meldungen aus.
Grüße Joche
Comment
-
Ich hab das mit den Kommas folgendermaßen gelöst:
procedure Doublewert(var Key: char; Sender: TObject);
var i:Integer;
var Kommas:Integer;
begin
if ((Key<#48) or (Key>#57)) and (Key <> #44) and (Key <> #8) and (Key <> #13) then
begin
Key:=#0;
end else
begin
if(Key=#44) then
if Sender is TEdit then begin
Kommas:=0;
for i:=1 to Length((Sender as TEdit).Text) do
begin
if (Sender as TEdit).Text[i]=#44 then begin Kommas:=Kommas+1; ShowMessage(IntToStr(Kommas)); end;
end;
if (Kommas=1) then Key:=#0;
Kommas:=0;
end;
end;
end
Comment
-
Hallo,<BR>tschuldi für das späte posten, aber ich bin auch noch nicht so lange dabei.<BR>Ich hab da die wohl komplizierteste Lösung, aber auch gleich ein Beispiel bereitgestellt.<BR>Unter<BR><BR> <a href="http://www.CastleJung.de/Tastatur.zip">www.CastleJung.de/Tastatur.zip</a><BR><BR>habe ich eine separate Tastatur zur Eingabe von Zahlen gemacht.<BR>Das war ursprünglich für Panel PCs ohne Tastatur (touchscreen) gedacht, aber vielleicht hilft es dir ja weiter..
Comment
Comment