Fórum Contar node filho de treeview #559709

30/07/2016

0

boa noite,

tenho essa procedure que popula um TreeView agrupando da seguinte forma:

procedure TfrmCobranca.ListaCheques;
Var
ItemUltiimoCurso, ItemUltimaUnidade, ItemUltimaTurma: TTreeNode;
xUnidadeAnt, xCursoAnt, xTurmaAnt: String;
node: integer;
begin
qryCheques.Open();
qryCheques.First;

while not qryCheques.Eof do
begin
if xUnidadeAnt <> qryCheques.FieldByName('nome_evento').AsString then
begin
ItemUltimaUnidade := trvCheques.Items.AddChild(Nil, qryCheques.FieldByName('nome_evento').AsString);
end;

if xCursoAnt <> qryCheques.FieldByName('nome_cliente').AsString then
begin
ItemUltiimoCurso := trvCheques.Items.AddChild(ItemUltimaUnidade, qryCheques.FieldByName('nome_cliente').AsString + '( ' +
qryCheques.FieldByName('id_cli').AsString + '/' + qryCheques.FieldByName('loja').AsString + ' )');
end;
if xTurmaAnt <> qryCheques.FieldByName('ch_numero').AsString then
begin
ItemUltimaTurma := trvCheques.Items.AddChild(ItemUltiimoCurso, 'Número: ' + qryCheques.FieldByName('ch_numero').AsString +
' - ' + ' Valor: ' + FormatFloat('###,##0.00', qryCheques.FieldByName('ch_valor').AsFloat) + ' - Valor Corrigido: ' +
FormatFloat('###,##0.00', qryCheques.FieldByName('ch_valor_corrigido').AsFloat));

end;
xUnidadeAnt := qryCheques.FieldByName('nome_evento').AsString;
xCursoAnt := qryCheques.FieldByName('nome_cliente').AsString;
xTurmaAnt := qryCheques.FieldByName('ch_numero').AsString;

qryCheques.Next;

end;

end;

Resultado:

CHEQUES DEVOLVIDOS
|12222111
|32211122
CHEQUES CANCELADOS
|965554444
|9655441113

Está funcionando beleza, o que eu estava precisando e colocar na frente do node principal a quantidade de filhos daquele node tipo:

CHEQUES DEVOLVIDO(2)
|12222111
|32211122
CHEQUES CANCELADO(3)
|965554444
|9655441113
|9955474663
CHEQUES SUSTADO(1)
|22255411441


Alguém pode me ajudar?


Grato:
Jose Medeiros

Jose Medeiros

Responder

Post mais votado

01/08/2016

Teste assim:
procedure TfrmCobranca.ListaCheques; 
Var 
  ItemUltiimoCurso, ItemUltimaUnidade, ItemUltimaTurma: TTreeNode; 
  xUnidadeAnt, xCursoAnt, xTurmaAnt: String; 
  Node: Integer; 
begin 
  qryCheques.Open(); 
  qryCheques.First; 

  while not qryCheques.Eof do 
  begin 
    if xUnidadeAnt <> qryCheques.FieldByName('nome_evento').AsString then 
    begin 
      if ItemUltimaUnidade <> nil then 
        ItemUltimaUnidade.Text := ItemUltimaUnidade.Text + ' (' +IntToStr(ItemUltimaUnidade.Count) + ')'; 

      ItemUltimaUnidade := trvCheques.Items.AddChild(Nil, qryCheques.FieldByName('nome_evento') 
        .AsString); 
    end; 

    if xCursoAnt <> qryCheques.FieldByName('nome_cliente').AsString then 
    begin 
      ItemUltiimoCurso := trvCheques.Items.AddChild(ItemUltimaUnidade, 
        qryCheques.FieldByName('nome_cliente').AsString + '( ' + qryCheques.FieldByName('id_cli') 
        .AsString + '/' + qryCheques.FieldByName('loja').AsString + ' )'); 
    end; 

    if xTurmaAnt <> qryCheques.FieldByName('ch_numero').AsString then 
    begin 
      ItemUltimaTurma := trvCheques.Items.AddChild(ItemUltiimoCurso, 
        'Número: ' + qryCheques.FieldByName('ch_numero').AsString + ' - ' + ' Valor: ' + 
        FormatFloat('###,##0.00', qryCheques.FieldByName('ch_valor').AsFloat) + 
        ' - Valor Corrigido: ' + FormatFloat('###,##0.00', 
        qryCheques.FieldByName('ch_valor_corrigido').AsFloat)); 
    end; 

    xUnidadeAnt := qryCheques.FieldByName('nome_evento').AsString; 
    xCursoAnt := qryCheques.FieldByName('nome_cliente').AsString; 
    xTurmaAnt := qryCheques.FieldByName('ch_numero').AsString; 

    qryCheques.Next; 
  end; 

  if ItemUltimaUnidade <> nil then 
    ItemUltimaUnidade.Text := ItemUltimaUnidade.Text + ' (' +IntToStr(ItemUltimaUnidade.Count) + ')'; 
end;

Natanael Ferreira

Natanael Ferreira
Responder

Gostei + 1

Mais Posts

01/08/2016

Jose Medeiros

Boa tarde,

Deu certo, muito obrigado pela ajuda.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar