Contar node filho de treeview
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:
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
Curtidas 0
Melhor post
Natanael Ferreira
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;GOSTEI 1
Mais Respostas
Jose Medeiros
30/07/2016
Boa tarde,
Deu certo, muito obrigado pela ajuda.
Deu certo, muito obrigado pela ajuda.
GOSTEI 0