![]() |
FireMonkey, Livebinding und Nachkommastellen in einem TGrid
Hallo,
wie im Titel schon beschrieben versuche ich unter FireMonkey (Delphi Rad Studio 10.2.3) und einer kleinen SQLite Datenbank Zahlen auf eine Nachkommastelle zu beschränken. Leider schlagen alle Versuche bisher fehl. Weder DisplayFormat noch CustomFormat brachten irgend eine Lösung. Die Ausgabe bleibt immer gleich also 18 wird mit 18.00 ausgegeben... Der letzte Versuch die Ausgabe per OnDrawColumCell durchzuführen scheiterte, da irgendwie die Methode DefaultDrawColumnCell nicht mehr existiert obwohl in der Dokumentation darauf verwiesen wird... Hat schon einmal jemand hier dieses Problem lösen können? Viele Grüße Elmar |
AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid
Von Datenbanken habe ich leider keine Ahnung, daher kann ich Dir in diesem Punkt nicht helfen.
Aber das DefaultDraw kannst Du mit
Delphi-Quellcode:
aufrufen.
Column.DefaultDrawCell
Du musst dann wahrscheinlich bei dem TGrid noch "DefaultDrawing" auf False setzen. |
AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank für den Hinweis, ich dachte ich könnte damit das Problem lösen, aber
irgendwie denke ich wohl falsch herum... Mal ein einfaches Beispiel:
Delphi-Quellcode:
Und so sieht es aus (rechtes Grid), wieder die Ausgabe 18.00 :evil:
procedure TFrmZutaten.Grid1DrawColumnCell(Sender: TObject;
const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates); Var V : TValue; S : String; begin If Column.Header = 'Amount' Then Begin S := '18'; V := TValue.From<String>(S); End Else V := Value; Column.DefaultDrawCell(Canvas, Bounds, Row, V, State); end; |
AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid
Die Verwendung ist hier grundsätzlich so gedacht, dass Du in diesem Event nur für spezifische Fälle, wo eine Abweichung vom Standard erforderlich ist, selber die grafische Ausgabe zeichnest ("canvas.filltext").
So kann man z.B., bei Bedarf auch die Bündigkeit (linkbsbündig, rechtsbündig, etc) ändern (bei Bedarf und soweit verfügbar: In meinem letzten FMX-Buch findest Du unter Tipp R20 und R21 vollständige Beispiele für das zeichnen mit links- rechtsbündiger oder zentrierter Ausgabe, im TGrid bzw. TStringGrid). Und Fälle, wo keine Abweichung erforderlich ist, da rufst Du die Standard-Zeichenausgabe mit "Column.DefaultDrawCell auf". Oft wird man dann aber eh gleich alles selber zeichnen. In Deinem Beispiel rufst Du ja immer nur die Standardausgabe auf, und wahrscheinlich ist das ja eine Currency-Column und da ist die Ausgabe eben 18,00. Davon abgesehen kannst Du bei Verwendung der CurrenyColumn mit ändern der Eigenschaft von "DecimalDigits" von 2 auf 1 die Ausgabe auf eine Nachkommastelle erreichen. |
AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid
Ich habe es gerade mal mit einem ClientDataSet ausprobiert. Wenn ich dort beim Feld das Displayformat auf '#.0' oder '0.0' setze, dann wird diese Einstellung (1 Nachkommastelle) auch genommen.
|
AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid
@Harry Stahl oh du hast natürlich recht :oops::oops::oops: da muss ich noch mal ran
@Olli73 ich verwende ein TFDQuery und TDataSource mit einer SQLite Datenbank und da klappt das nicht :evil: |
AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid
und wie sieht die Query aus?
Gruß K-H |
AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid
Also die Tabelle sieht so aus:
Delphi-Quellcode:
und die Query so:
TablesSQLite[tbl_data_ingredient] :=
'CREATE TABLE IF NOT EXISTS tbl_data_ingredient ( '+ ' IngredientID INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,'+ ' RecipeRefID INTEGER NOT NULL, '+ ' IngredientRefID INTEGER NOT NULL, '+ // aus tbl_sel_Ingredient ' Amount DOUBLE NULL, '+ // Menge z.B. 10 ' UnitRefID INTEGER NULL, '+ // Einheit z.B. g, L, kg ' Comment TEXT(500) NULL, '+ // z.B. "nach Bedarf" 'FOREIGN KEY (RecipeRefID) '+ 'REFERENCES tbl_data_recipe (RecipeID) '+ 'FOREIGN KEY (IngredientRefID) '+ 'REFERENCES tbl_sel_ingredient (IngredientID) )';
Code:
Es besteht eine Master-Detail Beziehung zu einer weiteren Tabelle.
SELECT * FROM tbl_data_ingredient
WHERE RecipeRefID = :RecipeID |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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 by Thomas Breitkreuz