Jump to content
Fórum Script Brasil
  • 0

Como usar o JvDBGridFooter


robinhocne

Question

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 to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...