Ilano 0 Denunciar post Postado Abril 15, 2011 Olá pessoal, Alguém pode me dizer o que está faltando neste código? Pois está dando erro na linha em vermelho. Estou usando Delphi 7 e o componente é DevExpress. procedure TFrmScriptSQL.SpeedButton1Click(Sender: TObject); Var GridColumn : TdxDBTreeListColumn; SummaryItems : TdxDBGridSummaryItems; NewSummaryItem : TdxDBGridSummaryItem; I : Integer; begin I:=ListBox2.ItemIndex; if not dxDBGrid3.IsGridMode then begin GridColumn := dxDBGrid3.ColumnByName('dxDBGrid1Event_Date'); if GridColumn.SummaryGroup <> nil then begin SummaryItems := GridColumn.SummaryGroup.SummaryItems; NewSummaryItem := SummaryItems.Add; NewSummaryItem.ColumnName := '_dxColumna' + IntToStr(ListBox2.ItemIndex); NewSummaryItem.SummaryField := ListBox2.Items.Strings; NewSummaryItem.SummaryFormat := TxtFormato1.Text; If rgCabecalho.ItemIndex = 0 Then NewSummaryItem.SummaryType := cstNone Else If rgCabecalho.ItemIndex = 1 Then NewSummaryItem.SummaryType := cstSum Else If rgCabecalho.ItemIndex = 2 Then NewSummaryItem.SummaryType := cstMin Else If rgCabecalho.ItemIndex = 2 Then NewSummaryItem.SummaryType := cstMax Else If rgCabecalho.ItemIndex = 3 Then NewSummaryItem.SummaryType := cstMax Else If rgCabecalho.ItemIndex = 4 Then NewSummaryItem.SummaryType := cstCount Else If rgCabecalho.ItemIndex = 4 Then NewSummaryItem.SummaryType := cstAvg; dxDBGrid1.RefreshGroupColumns; end; end; dxDBGrid3.ShowSummaryFooter; end; Grato, Ilano. Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Abril 16, 2011 A propriedade SummaryGroup é algum tipo de pointer? Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Maio 10, 2011 Olá pessoal, Bem, consegui fazer até certo ponto, contudo não estou conseguindo apontar para as propriedades destacadas em vermelho. Por enquanto, o meu código está assim: procedure TFrmScriptSQL.BtnAplicar1Click(Sender: TObject); Var Campo, ColunaName, GrupoName : String; Col, Grupo, Item : Integer; begin dxDBGrid3.ShowSummaryFooter:=True; Col:=ListBox2.ItemIndex; Campo:=ListBox2.Items.Strings[Col]; If dxDBGrid3.SummaryGroups.Count = 0 Then dxDBGrid3.SummaryGroups.Add; Grupo:=dxDBGrid3.SummaryGroups.Count - 1; dxDBGrid3.SummaryGroups[Grupo].SummaryItems.Add; Item:=dxDBGrid3.SummaryGroups[Grupo].SummaryItems.Count - 1; dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].GetSummaryItems.Add; ColunaName:=ListBox3.Items.Strings[Col]; dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].ColumnName:=ColunaName; dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryFormat:=TxtFormato1.Text; dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryField:=Campo; GrupoName:=dxDBGrid3.SummaryGroups[Grupo].Name; If rgCabecalho.ItemIndex = 0 Then Begin dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryType:=cstNone; dxDBGrid3.Columns[Col].SummaryFooterType:=cstNone; End Else If rgCabecalho.ItemIndex = 1 Then Begin dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryType:=cstSum; dxDBGrid3.Columns[Col].SummaryFooterType:=cstSum; End Else If rgCabecalho.ItemIndex = 1 Then Begin dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryType:=cstMin; dxDBGrid3.Columns[Col].SummaryFooterType:=cstMin; End Else If rgCabecalho.ItemIndex = 2 Then Begin dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryType:=cstMax; dxDBGrid3.Columns[Col].SummaryFooterType:=cstMax; End Else If rgCabecalho.ItemIndex = 3 Then Begin dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryType:=cstCount; dxDBGrid3.Columns[Col].SummaryFooterType:=cstCount; End Else If rgCabecalho.ItemIndex = 3 Then Begin dxDBGrid3.SummaryGroups[Grupo].SummaryItems[item].SummaryType:=cstAvg; dxDBGrid3.Columns[Col].SummaryFooterType:=cstAvg; End; dxDBGrid3.Columns[Col].SummaryFooterField:=Campo; dxDBGrid3.Columns[Col].SummaryFooterFormat:=TxtFormato1.Text; //O erro está acontecendo nesta três últimas linhas: dxDBGrid3.GroupColumns[Grupo].SummaryField:=Campo; dxDBGrid3.GroupColumns[Grupo].SummaryFormat:=TxtFormato1.Text; dxDBGrid3.GroupColumns[Grupo].Name:=GrupoName; end; A mensagem de erro é: List index out bounds(0) Alguém poderia me dar uma luz? Compartilhar este post Link para o post Compartilhar em outros sites
bdexterholland 0 Denunciar post Postado Maio 11, 2011 Eu não trabalho com dbExpress e nunca usei o SummaryGroup em outros componentes, portanto não posso te passar uma dica direta, mas posso sugerir que você verifique o resultado desta atribuição: Grupo:=dxDBGrid3.SummaryGroups.Count - 1; Compartilhar este post Link para o post Compartilhar em outros sites
Ilano 0 Denunciar post Postado Maio 16, 2011 Olá bdexterholland, Agradço muito sua atenção. Bom, estou usando aquela atribuição pq como estou fazendo com que o usuário abra ou crie novas consultas as colunas do dxDBGrid seráo removidas e recriadas, assim, ao montar os Sumários vejo se existem Grupos por isso o COUNT, se houver pego o último índice pois não sei quantos e quais grupos já tem criado, por isso o Grupo:=dxDBGrid3.SummaryGroups.Count - 1; Até agora, está tudo indo direitinho, só que estão faltando aquelas últimas implementações para que o componente possa mostrar a soma correta da coluna, pois no momento só está me retornando ZERO. dxDBGrid3.GroupColumns[Grupo].SummaryField:=Campo;dxDBGrid3.GroupColumns[Grupo].SummaryFormat:=TxtFormato1.Text; dxDBGrid3.GroupColumns[Grupo].Name:=GrupoName; Mais alguém tem outra sugestão? :cry: Compartilhar este post Link para o post Compartilhar em outros sites