AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls FireMonkey, Livebinding und Nachkommastellen in einem TGrid
Thema durchsuchen
Ansicht
Themen-Optionen

FireMonkey, Livebinding und Nachkommastellen in einem TGrid

Ein Thema von elmar.faber · begonnen am 8. Aug 2018 · letzter Beitrag vom 13. Aug 2018
Antwort Antwort
elmar.faber

Registriert seit: 10. Sep 2007
Ort: Neustadt (Hessen)
37 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 8. Aug 2018, 13:49
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
Elmar Faber
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.533 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 8. Aug 2018, 23:35
Von Datenbanken habe ich leider keine Ahnung, daher kann ich Dir in diesem Punkt nicht helfen.

Aber das DefaultDraw kannst Du mit

Column.DefaultDrawCell aufrufen.

Du musst dann wahrscheinlich bei dem TGrid noch "DefaultDrawing" auf False setzen.
  Mit Zitat antworten Zitat
elmar.faber

Registriert seit: 10. Sep 2007
Ort: Neustadt (Hessen)
37 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#3

AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 9. Aug 2018, 10:36
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:
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 = 'AmountThen Begin
    S := '18';
    V := TValue.From<String>(S);
  End Else
    V := Value;

  Column.DefaultDrawCell(Canvas, Bounds, Row, V, State);
end;
Und so sieht es aus (rechtes Grid), wieder die Ausgabe 18.00
Miniaturansicht angehängter Grafiken
ausgabe.png  
Elmar Faber
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.533 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 9. Aug 2018, 18:43
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.

Geändert von Harry Stahl ( 9. Aug 2018 um 18:46 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#5

AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 9. Aug 2018, 20:07
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.

Geändert von Olli73 ( 9. Aug 2018 um 20:10 Uhr)
  Mit Zitat antworten Zitat
elmar.faber

Registriert seit: 10. Sep 2007
Ort: Neustadt (Hessen)
37 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#6

AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 12. Aug 2018, 10:06
@Harry Stahl oh du hast natürlich recht da muss ich noch mal ran

@Olli73 ich verwende ein TFDQuery und TDataSource mit einer SQLite Datenbank und da klappt das nicht
Elmar Faber
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 12. Aug 2018, 14:25
und wie sieht die Query aus?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
elmar.faber

Registriert seit: 10. Sep 2007
Ort: Neustadt (Hessen)
37 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#8

AW: FireMonkey, Livebinding und Nachkommastellen in einem TGrid

  Alt 13. Aug 2018, 11:31
Also die Tabelle sieht so aus:

Delphi-Quellcode:
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) )';
und die Query so:

Code:
SELECT * FROM tbl_data_ingredient
WHERE RecipeRefID = :RecipeID
Es besteht eine Master-Detail Beziehung zu einer weiteren Tabelle.
Elmar Faber
  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 14:21 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