QuantumGrid - criar, atualizar e remover somatorios de um cxGrid |
Top Previous Next |
// estrutura na tela: Grid Nivel - Dados
// onde Grid : TcxGrid Nivel: TcxGridLevel Dados: TcxGridDBTableView
uses cxGridDBTableView, cxGridTableView, cxGrid, cxGridCustomView, cxGridStyleSheetsPreview, cxStyleSheetEditor, Cxstyles;
---------------------------------------- // QuantumGrid - criar, atualizar e remover somatorios de um cxGrid // criando somatorios de grupo no braço (nao esqueça que o rodapé do grupo // tem que está visivel) Dados.DataController.Summary.BeginUpdate; try var ASummaryItems: TcxDataSummaryItems; begin ASummaryItems:= DadosGrid.DataController.Summary.DefaultGroupSummaryItems;
with TcxGridTableSummaryItem(ASummaryItems.Add) do begin Column:= DadosGridAGENCIA; Kind:= skCount; Position := spFooter; end; end;
Dados.DataController.Summary.SummaryGroups.Clear; with Dados.DataController.Summary.SummaryGroups.Add do begin // Campo do grupo TcxGridTableSummaryGroupItemLink(Links.Add).Column := DadosSECAO; // CAMPO 1 with SummaryItems.Add as TcxGridDBTableSummaryItem do begin Column := DadosVLR_VENDA; Kind := skSum; Format := '#,##0.00'; Position := spFooter; // tire isso para fazer no cabeçalho do grupo end; // CAMPO 2 with SummaryItems.Add as TcxGridDBTableSummaryItem do begin Column := DadosCODIGO; Kind := skCount; Format := '0'; Position := spFooter; // tire isso para fazer no cabeçalho do grupo end; end; finally Dados.DataController.Summary.EndUpdate; end;
// criar somatorio no rodapé da grid (geral) Dados.DataController.Summary.BeginUpdate; try with Dados.DataController.Summary.FooterSummaryItems.Add as TcxGridDBTableSummaryItem do begin Column := DadosCODIGO; Kind := skCount; Format := '#,##0'; end; finally Dados.DataController.Summary.EndUpdate; end; //Update all open details of the master view (tvCars) Dados.DataController.ClearDetails;
// retorna TRUE se o campo passado como parametro tem somatório function CampoHasSum(const Campo: TField): Boolean; var I, C: Integer; X: TcxGridDBTableSummaryItem; begin Result := False; // percorre os grupos definidos for I := 0 to Dados.DataController.Summary.SummaryGroups.Count-1 do // percorre os itens deste grupo for C := 0 to Dados.DataController.Summary.SummaryGroups[I].SummaryItems.Count-1 do begin // o item é transferido para "x" que é do tipo Item de somatorio X := TcxGridDBTableSummaryItem(Dados.DataController.Summary.SummaryGroups[I].SummaryItems[C]); // o campo do X é igual ao campo do parametro da função? if Campo = X.Column.DataBinding.Field then begin Result := True; Break; end; if Result then Break; end; end; |