Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TBCDField: Eingabe bei Nachkommastellen verbessern (https://www.delphipraxis.net/212410-tbcdfield-eingabe-bei-nachkommastellen-verbessern.html)

UliTs 6. Feb 2023 17:42

Datenbank: Advantage Database • Version: 12.0.0.0 • Zugriff über: Delphi (FireDac)

TBCDField: Eingabe bei Nachkommastellen verbessern
 
Hallo allerseits, ich habe ein Eingabefeld mit 4 Vorkomma und 3 Nachkommastellen (TBCDField). Mittels TDBEdit können die Daten geändert werden.
Wenn man (z.B. versehentlich) einen 5-stelligen Wert (z.B. 12345) eingibt, wird eine Exception ausgelöst.

Ziel ist es, dass bei Eingabe von "12345" diese automatisch in "1234,5" gewandelt wird.

War das verständlich und hat jemand eine Idee, wie ich das programmieren könnte?

himitsu 6. Feb 2023 17:44

AW: TBCDField: Eingabe bei Nachkommastellen verbessern
 
Das TField hat ein paar Events (z.B. OnEditText oder so)

Dort kannst du die Eingaben nach belieben anpassen/überarbeiten.

UliTs 7. Feb 2023 17:45

AW: TBCDField: Eingabe bei Nachkommastellen verbessern
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke. Leider werden die gängigen Ereignisse nicht ausgelöst, bevor die folgende Exception als Fehlermeldung kommt:

Delphi.Narium 7. Feb 2023 18:14

AW: TBCDField: Eingabe bei Nachkommastellen verbessern
 
Nutzt Du zufällig die JVCL?

Dort gibt es ein TJVDBMaskEdit, in dem Du eine Eingabemaske vorgeben kannst, die dann nur zulässige Eingaben durchlässt.

Alternative:

TDBEdit hat ein OnChange-Ereignis. Das wird immer ausgelöst, wenn man was eingibt.
Eventuell kannst Du ja dort die Länge der Eingabe prüfen und wenn diese 4 übersteigt, automatisch das Komma einfügen oder das Ereignis OnExit des TDBEdit nutzen.

Ansonsten mach' ich Plausiprüfungen immer (oder eher manchmal) im BeforePost-Ereignis des DataSets.

Ganz grob sowas in der Art:
Delphi-Quellcode:
if (Length(DBEdit1.Field.AsString) > 5) and Pos(',',DBEdit1.Field.AsString) = 0) then begin
  DBEdit1.Field.AsString := Format('%s,%s',[Copy(DBEdit1.Field.AsString, 1, 4), Copy(DBEdit1.Field.AsString, 5, Length(DBEdit1.Field.AsString)]);
end;

UliTs 7. Feb 2023 19:43

AW: TBCDField: Eingabe bei Nachkommastellen verbessern
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1518423)
...
TDBEdit hat ein OnChange-Ereignis. Das wird immer ausgelöst, wenn man was eingibt.
Eventuell kannst Du ja dort die Länge der Eingabe prüfen und wenn diese 4 übersteigt, automatisch das Komma einfügen ...

Danke! Ja, so komme ich weiter. Ich berichte, wenn es geklappt hat :) .


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