AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Währungeingabe mit TMaskEdit?

Ein Thema von Alallart · begonnen am 19. Jan 2019 · letzter Beitrag vom 21. Jan 2019
Antwort Antwort
Alallart

Registriert seit: 8. Dez 2015
153 Beiträge
 
#1

Währungeingabe mit TMaskEdit?

  Alt 19. Jan 2019, 12:15
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.
  Mit Zitat antworten Zitat
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.
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#3

AW: Währungeingabe mit TMaskEdit?

  Alt 19. Jan 2019, 16:09
Für die Eingabe von Fließkommazahlen und somit auch Währungen ist TMaskEdit nicht wirklich geeignet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#4

AW: Währungeingabe mit TMaskEdit?

  Alt 19. Jan 2019, 16:14
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
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
153 Beiträge
 
#5

AW: Währungeingabe mit TMaskEdit?

  Alt 20. Jan 2019, 14:41
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;

Geändert von Alallart (20. Jan 2019 um 14:45 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Währungeingabe mit TMaskEdit?

  Alt 20. Jan 2019, 20:47
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Alallart

Registriert seit: 8. Dez 2015
153 Beiträge
 
#7

AW: Währungeingabe mit TMaskEdit?

  Alt 20. Jan 2019, 22:09
Danke, daran habe ich nicht gedacht. Tab wird von KeyPress nicht beachtet, aber die Null kann man auch über Exit einfügen.
  Mit Zitat antworten Zitat
skoschke

Registriert seit: 6. Jan 2009
523 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Währungeingabe mit TMaskEdit?

  Alt 21. Jan 2019, 08:14
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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