![]() |
Währungeingabe mit TMaskEdit?
Ich kenne mich mit TMaskEdit gar nicht aus, ich kenne nur grob die Regeln.
Was ich brauche ist eine Währungseingabe, die allerdings nach paar Regeln funktioniert. Und es gibt Programme bei denen das so funktioniert, also ist es möglich. Nur weiß ich nicht ob das mit TMaskEdit gemacht wurde. - Was es nicht will ist eine leere Maske wie _.___,__. Ich will nur Werte eingeben, ich brauche keine Unterstriche. - Auch soll es bei der Eingabe kein 2.2__,23 oder 2.2 ,23 geben. Sieht unnatürlich aus. Die Eingabe soll 22,23 ermöglichen. Das kriege ich mit TMaskEdit bisher nicht hin. - Auch soll die dritte Nachkommastelle den Wert nicht verfälschen. Wenn ich also 12,345 eingebe, soll das Feld die dritte Nachkommastelle verhindern und nicht die Zahl aufrunden, so das kein 12,35 daraus wird, weil xx,x45 aufgerundet wird. Wenn ich 12,345 eingebe, soll im Feld 12,34 stehen. Die 5 soll ignoriert werden. Ist sowas mit TMaskEdit möglich? Wenn ja, dann beschäftige ich mich weiter damit, wenn nein, dann programmiere ich mir mein eigenes Edit wo das geht. |
Dieses Thema wurde am "19. Jan 2019, 13:32 Uhr" von "Luckie" aus dem Forum "Programmieren allgemein" in das Forum "GUI-Design mit VCL / FireMonkey / Common Controls" verschoben.
|
AW: Währungeingabe mit TMaskEdit?
Für die Eingabe von Fließkommazahlen und somit auch Währungen ist TMaskEdit nicht wirklich geeignet.
|
AW: Währungeingabe mit TMaskEdit?
Delphi-Quellcode:
Sind mehr Vorkommastellen erwünscht, dann halt die Eingabemaske um entsprechend viele Neunen erweitern.
EditMask = 99,99;0;
Ansonsten die Hilfe bemühen: ![]() |
AW: Währungeingabe mit TMaskEdit?
Ich habe mir etwas programmiert. Es ist möglich nur Zahlen und ein Komma einzugeben, und Prozedur springt bei Enter-Taste in das nächste Feld. Vielleicht kann der eine oder andere mal drüber gucken ob da ein Fehler erkennbar ist oder man es besser machen kann.
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const decPlaces = 2; //Anzahl Nachkommastellen var s: string; p: Integer; begin s := TEdit(Sender).Text; p := Pos(DecimalSeparator, s); //DecimalSeparator = Komma in DE //Begrenzt Eingabe auf folgende Zeichen if not (Key in ['0'..'9', DecimalSeparator, #8]) then // #8 = Backspace-Taste Key := #0; //WICHTIG: Diese Abfrage muss vorne stehen, sonst wird RETURN u. U. ignoriert. //Schickt Fokus bei ENTER zum nächsten Element. if Key = Chr(VK_RETURN) then //Wenn Return gedrückt wird... begin if s = '' then //Wenn Feld leer, dann vor dem Exit 0 eingeben. Key := '0'; Self.Perform(WM_NEXTDLGCTL, 0, 0); //Springt zum nächsten Control end; //Lässt kein zweites Komma zu if (p > 0) and (Key = DecimalSeparator) then begin Key := #0; Exit; end; //Begrenzt die Eingabe auf z.B. zwei Nachkomma-Stellen if (Key <> #8) then //Backspace-Taste zulassen if (p > 0) then if Length(s) >= (p + decPlaces) then begin Key := #0; Exit; end; end; |
AW: Währungeingabe mit TMaskEdit?
Und was passiert wenn die Tabulatortaste gedrückt wird?
Am Rande: Zitat:
Gruß k-H |
AW: Währungeingabe mit TMaskEdit?
Danke, daran habe ich nicht gedacht. Tab wird von KeyPress nicht beachtet, aber die Null kann man auch über Exit einfügen.
|
AW: Währungeingabe mit TMaskEdit?
Du solltest dem Anwender helfen indem Du einen eingegebenen Punkt wie ein Komma behandelst, momentan wird der Punkt unterdrückt und bei Eingabe von 1 punkt 2 3 kommt 123 anstelle 1,23 im Control an!
Ciao Stefan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 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