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/)
-   -   Double-Werte in Listview formatieren (Preise mit '0.00') (https://www.delphipraxis.net/199304-double-werte-listview-formatieren-preise-mit-0-00-a.html)

Markus Effenberger 13. Jan 2019 21:43

Double-Werte in Listview formatieren (Preise mit '0.00')
 
Moin!

Wenn man eine Tabelle mit Preisen an eine Listview per LiveBindings verbindet, so entsteht bei z.B. 1 Euro der Text '1'.
Bei 1,10 Euro entsteht der Wert '1,1'.
Die Werte in der Tabelle sind vom Typ Float.
Es wird FMX genutzt.
Also möchte ich die Werte nachträglich formatieren (weil sie ja im Item eh zu Text werden)
und habe mir folgendes gedacht:

Code:
  frmBestellen.ListView.BeginUpdate;
  for i := 0 to frmBestellen.ListView.ItemCount - 1 do
    begin
      frmBestellen.ListView.Items[i].Objects.FindObject('TPreis').Data.AsString :=
        FormatFloat('0.00',
          StrToFloat(
            frmBestellen.ListView.Items[i].Objects.FindObject('TPreis').Data.AsString
               ) );
    end;
  frmBestellen.ListView.EndUpdate;
Geht aber nicht, weil man "AsString" nichts zuweisen kann :wall:

Weiß jemand eine Lösung, wie man nachträglich in die dynamischen Elemente (TextObjecte) schreiben kann?
Es handelt sich um eine ListView mit DynamicAppearance.

Schönen RestAbend wünsche ich noch :)

Markus


PS: Es handelt sich um Delphi 10.3

Schokohase 13. Jan 2019 21:49

AW: Double-Werte in Listview formatieren (Preise mit '0.00')
 
Schau mal da
https://stackoverflow.com/questions/...s-customformat
vorbei

Markus Effenberger 14. Jan 2019 20:42

AW: Double-Werte in Listview formatieren (Preise mit '0.00')
 
Zitat:

Zitat von Schokohase (Beitrag 1423244)

Danke, der dortige Hinweis zu den Properties war gut.
Allerdings war die Lösung jetzt dort das "currency" auf True zu setzen.

Markus

TurboMagic 15. Jan 2019 18:58

AW: Double-Werte in Listview formatieren (Preise mit '0.00')
 
Naja, Currency statt Float zu benutzen ist ja auch korrekt, da man sich sonst
ggf. ungewollte Rundungsfehler in der Währungsarithmetik einfängt.

Geldbeträge generell sollten keine Floats sein, da man bei Floats nie ganz
sicher sein kann, ob alle Beträge auch wirklich darstellbar sind.


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