Ir para conteúdo
Fórum Script Brasil
  • 0

Como usar o JvDBGridFooter


robinhocne

Pergunta

Tenho no delphi 7, instalado o pacote de componentes do JEDI e nele na aba Jv Data Controls tem o componente JvDBGridFooter, esse componente serve para o que ?

Pois creio eu que seria para ter um resultado das minhas colunas de valores, nele tem a propriedade DataSource onde coloquei o DataSource do Grid e tem a propriedade DBGrid, onde relacionei o Grid que mostrar os valores....

Se clicar duas vezes nele aparece para incluir os panels, mas não tenho nada a relacionar a qual coluna eu quero do meu gri, nesse componente tem a propriedade Columns, onde se incluir colunas tem nela a propriedade FieldName, achei que colocando o mesmo nome da coluna do Grid ia dar certo, mas também não deu....

Como uso esse componente ?

Há um detalhe os dados que eu mostro no Grid eu carrego em uma tabela temporaria.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

creio eu que seria para ter um resultado das minhas colunas de valores

OBS: a partir do post nº 9, voce tem a explicação de como usar JvDBGridFooter para fazer calculo com as colunas

veja tambem o help desse componente

http://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvDBGridFooter

outro exemplo:

http://www.google.com.br/url?q=http://svn2...odvjnJPWns7IEKA

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
creio eu que seria para ter um resultado das minhas colunas de valores

OBS: a partir do post nº 9, voce tem a explicação de como usar JvDBGridFooter para fazer calculo com as colunas

veja tambem o help desse componente

http://wiki.delphi-jedi.org/wiki/JVCL_Help:TJvDBGridFooter

outro exemplo:

http://www.google.com.br/url?q=http://svn2...odvjnJPWns7IEKA

abraço

Fiz assim...

procedure TFrmFluxoCaixa.DbfFinCalculate(Sender: TJvDBGridFooter;
  const FieldName: String; var CalcValue: Variant);
begin

 if(AnsiSameText(FieldName, 'Vl_Dinheiro')) then
     begin
       FinDin    := FinDin + TblFinVl_Dinheiro.AsFloat;
       CalcValue := FinDin;
       DbfFin.Columns.Items[0].DisplayMask :=  FloatToStrF(CalcValue, ffNumber, 15,2);
    end;

 if(AnsiSameText(FieldName, 'Vl_Cheque')) then
     begin
       FinChe    := FinChe + TblFinVl_Dinheiro.AsFloat;
       CalcValue := FinChe;
       DbfFin.Columns.Items[1].DisplayMask :=  FloatToStrF(CalcValue, ffNumber, 15,2);
    end;

 if(AnsiSameText(FieldName, 'Vl_Conta')) then
     begin
       FinCon    := FinCon + TblFinVl_Dinheiro.AsFloat;
       CalcValue := FinCon;
       DbfFin.Columns.Items[2].DisplayMask :=  FloatToStrF(CalcValue, ffNumber, 15,2);
    end;

 if(AnsiSameText(FieldName, 'Vl_Totais')) then
     begin
       FinTot    := FinTot + TblFinVl_Dinheiro.AsFloat;
       CalcValue := FinTot;
       DbfFin.Columns.Items[3].DisplayMask :=  FloatToStrF(CalcValue, ffNumber, 15,2);
    end;

end;

mas ai todos os campos aparece o mesmo valor e se eu rolar linha por linha...do grid...vai mudando o valor....

Link para o comentário
Compartilhar em outros sites

  • 0
se eu rolar linha por linha...do grid...vai mudando o valor....

isso quer dizer que faltou fazer um loop nos registros

veja que no exemplo existe um comando for para fazer esse loop

abraço

mesmo colocando um loop....se eu percorrer linha a linha do grid o valor fica loco....e para todos....fica o mesmo....

Link para o comentário
Compartilhar em outros sites

  • 0
voce esta zerando as variaveis de calculo ?

Estou fazendo assim:

while not TblFin.Eof do
   begin

      if TblFinVl_Dinheiro.AsCurrency > 0 then
        begin
           if(AnsiSameText(FieldName, 'Vl_Dinheiro')) then
              begin
                FinDin    := FinDin + TblFinVl_Dinheiro.AsCurrency;
                CalcValue := FinDin;
                DbfFin.Columns.Items[0].DisplayMask :=  FloatToStrF(FinDin, ffNumber, 15,2);
              end;
       end;

     TblFin.Next;
   end;


 while not TblFin.Eof do
   begin

    if TblFinVl_Cheque.AsCurrency > 0 then
       begin
         if(AnsiSameText(FieldName, 'Vl_Cheque')) then
           begin
             FinChe    := FinChe + TblFinVl_Cheque.AsCurrency;
             CalcValue := FinChe;
             DbfFin.Columns.Items[1].DisplayMask :=  FloatToStrF(FinChe, ffNumber, 15,2);
           end;
       end;

     TblFin.Next;
   end;

mas a coluna do Vl_Cheque não aparece nada

Link para o comentário
Compartilhar em outros sites

  • 0

voce tem que analisar o exemplo e aplicar isso ao seu código

procedure TMainFrm.JvDBGridFooterCalculate(Sender: TJvDBGridFooter;
  const FieldName: String; var CalcValue: Variant);
var
  Y, Year: Integer;
begin
  with DM do
  begin
    if ClientMaiDataSet.Active then
    begin
      for Y := 0 to NrOfYears - 1 do
      begin
        Year := Y + GridStartYear;
        if(AnsiSameText(FieldName, 'Year' + IntToStr(Year))) then
          CalcValue := ClientMaiDataSet.FieldByName('SumYear' +
            IntToStr(Year)).AsString;
      end;
    end;
  end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
voce tem que analisar o exemplo e aplicar isso ao seu código

procedure TMainFrm.JvDBGridFooterCalculate(Sender: TJvDBGridFooter;
  const FieldName: String; var CalcValue: Variant);
var
  Y, Year: Integer;
begin
  with DM do
  begin
    if ClientMaiDataSet.Active then
    begin
      for Y := 0 to NrOfYears - 1 do
      begin
        Year := Y + GridStartYear;
        if(AnsiSameText(FieldName, 'Year' + IntToStr(Year))) then
          CalcValue := ClientMaiDataSet.FieldByName('SumYear' +
            IntToStr(Year)).AsString;
      end;
    end;
  end;
end;
abraço
Eu coloquei assim:
procedure TFrmFluxoCaixa.DbfFinCalculate(Sender: TJvDBGridFooter;
  const FieldName: String; var CalcValue: Variant);
var
  Y, Year: Integer;
begin
  with TblFin do
  begin
    if TblFin.Active then
    begin
      for Y := 0 to TblFin.RecordCount - 1 do
      begin
        if(AnsiSameText(FieldName, 'Vl_Dinheiro')) then
          begin
            FinDin    := FinDin + TblFin.FieldByName('Vl_Dinheiro').AsCurrency;
            CalcValue := FinDin;
            DbfFin.Columns.Items[0].DisplayMask :=  FloatToStrF(FinDin, ffNumber, 15,2);
          end;
      end;
    end;
  end;
end;

mas o valor que dá é muito alto....pois eu veja na imagem abaixo...

Sem_ttulo1.png

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      652k
×
×
  • Criar Novo...