AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi cxGrid - einige Spalten mit Summe anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

cxGrid - einige Spalten mit Summe anzeigen

Ein Thema von Ron67 · begonnen am 12. Sep 2019 · letzter Beitrag vom 16. Sep 2019
Antwort Antwort
Ron67

Registriert seit: 10. Sep 2018
Ort: Großraum Nürnberg
13 Beiträge
 
Delphi 11 Alexandria
 
#1

cxGrid - einige Spalten mit Summe anzeigen

  Alt 12. Sep 2019, 11:04
Datenbank: mysql • Version: 10.1.26 • Zugriff über: fireDAC
Moin,
Meine Frage scheint trivial zu sein. Aber ich kriege es nicht hin.

Ich habe ein cxGrid, welches mit der Query verbunden ist. Die Spaltenanzahl und die Spaltennamen variieren, die Query wird über Comboboxen und Checkboxen zusammen gesetzt.
Z.B:
Monat Werte2018 Werte2019
1 23 45
2 14 12
3 89 38
...

Code:
procedure TfrmChecks.DoTheSelect(ASelect : String);
  var
  I : Integer;
  LColumn : TcxGridDBColumn;
  LGridBreite : Integer;
begin
  qrySelect.Close; // Bleibt offen, bis Neue kommt
  qrySelect.sql.Clear;
  qrySelect.sql.Add(ASelect);
  qrySelect.Open();
  tvChecks.DataController.BeginUpdate;
  tvChecks.ClearItems;
  for I := 0 to qrySelect.FieldCount-1 do
  begin
    LColumn := tvChecks.CreateColumn;
    LColumn.DataBinding.FieldName := qrySelect.Fields[I].FieldName;
    LColumn.Name := qrySelect.Fields[I].FieldName;
    LColumn.Caption := qrySelect.Fields[I].FieldName;
    LColumn.Options.Editing := False;
    // Merke den Spaltennamen
    ColumnNames.Add(LColumn.Name);
  end;
  tvChecks.DataController.EndUpdate;
  tvChecks.DataController.RefreshExternalData;
  tvChecks.ApplyBestFit(); // Spaltenbreite optimieren(verkleinern)
  GridRowCount := tvChecks.DataController.RecordCount;
end;
Ich möchte nun in den Spalten mit den Werten die Summe darunter anzeigen. Und am liebsten auch unter der Spalte "Monat" den Text "Summe:".

Geht das mit
wasBraucheIchHier := LColumn.Summary.Create(was muß hier rein?)
Und wie genau?
  Mit Zitat antworten Zitat
oakley

Registriert seit: 15. Aug 2005
287 Beiträge
 
#2

AW: cxGrid - einige Spalten mit Summe anzeigen

  Alt 12. Sep 2019, 15:23
Moin,

ging das nicht so mit dem cxGrid von DevExpress:

var summe : TcxCustomGridTableItem;
begin
COL1.Summary.Create(summe);
end;

Du könntest danach über "summe" drauf zugreifen.

LG

Mirko

Geändert von oakley (12. Sep 2019 um 15:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: cxGrid - einige Spalten mit Summe anzeigen

  Alt 12. Sep 2019, 21:18
Ansatzweise so:
Delphi-Quellcode:
var
    SummaryItem := tvchecks.DataController.Summary.FooterSummaryItems.Add;
    SummaryItem.Kind := skSum;
    SummaryItem.ItemLink := LColumn;
    SummaryItem.Format := 'Summe 0.00;0.00';
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Ron67

Registriert seit: 10. Sep 2018
Ort: Großraum Nürnberg
13 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: cxGrid - einige Spalten mit Summe anzeigen

  Alt 16. Sep 2019, 11:26
Vielen Dank für die Antworten.
Bei Mirkos Ansatz bekomme ich Fehler, weil TcxCustomGridTableItem keine Elemente (.Kind, .ItemLink, .Format) enthält.

Der Typ muß wohl TcxGridDBTableSummaryItem sein, denn wenn ich im Design auf Customize gehe und bei Summary auf Add, dann steht dort unter Items
"0 - TcxGridDBTableSummaryItem".

Die Zeile von Union
LSummary := tvchecks.DataController.Summary.FooterSummaryItems .Add;
liefert allerdings ein Objekt vom Typ TcxDataSummaryItem

Ich bekomme inkompatiple Typen.

Ich probiere:
var LSummary : TcxDataSummaryItem;

Code:
      LSummary := tvchecks.DataController.Summary.FooterSummaryItems.Add;
     
      LSummary.Kind := skSum;
      LSummary.ItemLink := LColumn;
Das läßt sich zwar fehlerfrei kompilieren, aber ich sehe keine Summe und keinen Footer.

Ich habe noch einen anderen Lösungsansatz gefunden und ausprobiert:
var LSummary : TcxGridDBTableSummaryItem;

und dann:
LSummary := TcxGridDBTableSummaryItem.Create(tvchecks.DataCont roller.Summary.FooterSummaryItems);
gefunden hier:
https://www.delphipraxis.net/1186175-post2.html

Auch hier sehe ich weder einen Footer noch eine Summe.

Es kann doch nicht so schwierig sein, was habe ich übersehen?
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: cxGrid - einige Spalten mit Summe anzeigen

  Alt 16. Sep 2019, 11:51
Mach mal ein Mini-Testprojekt. Der von mir gepostete Code stammt aus einem lauffähigen Projekt. Wenn gar keine Fußzeilen zu sehen sind, musst Du sie anschalten.

OptionsView.Footer := True
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Ron67

Registriert seit: 10. Sep 2018
Ort: Großraum Nürnberg
13 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: cxGrid - einige Spalten mit Summe anzeigen

  Alt 16. Sep 2019, 12:31
@Union Danke, das hat gefehlt, jetzt sehe ich den Footer.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#7

AW: cxGrid - einige Spalten mit Summe anzeigen

  Alt 16. Sep 2019, 13:05
Um einen Text in der linken Nachbarspalte separat anzuzeigen, kannst Du das OnCustomDrawFooterCell Event verwenden. Die ColumnIndex-Abfragemusst Du natürlich anpassen:

Delphi-Quellcode:
procedure TfrmBelegKopf.cxGridBelegeDBTableView1CustomDrawFooterCell(
  Sender: TcxGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
  ColumnBounds : TRect;
  ColumnIndex : Integer;
begin
  ColumnIndex := AViewinfo.Column.Index;
  if ColumnIndex < 1 then exit;
  ColumnBounds := AViewInfo.Bounds;
  // Unter der linken Nachbarzelle zeichnen
  OffsetRect(ColumnBounds, -Sender.Columns[ColumnIndex-1].Width, 0);
  ACanvas.DrawTexT('Summen', ColumnBounds, cxAlignVCenter);
end;
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  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 17:18 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