Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Währungeingabe mit TMaskEdit? (https://www.delphipraxis.net/199380-waehrungeingabe-mit-tmaskedit.html)

Alallart 19. Jan 2019 12:15

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.

DP-Maintenance 19. Jan 2019 12:32

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.

Uwe Raabe 19. Jan 2019 16:09

AW: Währungeingabe mit TMaskEdit?
 
Für die Eingabe von Fließkommazahlen und somit auch Währungen ist TMaskEdit nicht wirklich geeignet.

Delphi.Narium 19. Jan 2019 16:14

AW: Währungeingabe mit TMaskEdit?
 
Delphi-Quellcode:
EditMask = 99,99;0;
Sind mehr Vorkommastellen erwünscht, dann halt die Eingabemaske um entsprechend viele Neunen erweitern.

Ansonsten die Hilfe bemühen: http://docs.embarcadero.com/products...TEditMask.html

Alallart 20. Jan 2019 14:41

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;

p80286 20. Jan 2019 20:47

AW: Währungeingabe mit TMaskEdit?
 
Und was passiert wenn die Tabulatortaste gedrückt wird?

Am Rande:
Zitat:

Es ist möglich nur Zahlen und ein Komma einzugeben

Delphi-Quellcode:
 //Begrenzt Eingabe auf folgende Zeichen
  if not (Key in ['0'..'9', DecimalSeparator, #8]) then // #8 = Backspace-Taste
    Key := #0;

Der Source spiegelt die erste Aussage nicht unbedingt wieder. Muß nicht sein, Hauptsache man weiß was gemeint ist. Könnte man so sehen..........

Gruß
k-H

Alallart 20. Jan 2019 22:09

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.

skoschke 21. Jan 2019 08:14

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 09:27 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