Fórum Tree View não mostra o Child em local certo #221045
18/03/2004
0
Estou batendo cabeça com uma tree view e não consigo ver o que há de erro:
Leio do banco uma query que me tráz todos os produtos de uma tabela. Então abro um laço de repetição e começo a criar os nós da árvore. Em cada produto que leio da query verifico em outra query se existe código de barras para ele, se existir listo como filhos. Bem o primeiro que tem filhos, aparece, mas a partir do segundo aparece em produto errado. Minha lógica:
trwProd.Items.Clear;
i := 0;
While not qryAux.Eof do
begin
trwProd.Items.Add(Nil, Frm_data0001.qryAux.FieldByName(´DB15_COD_PROD´).AsString)
qryDisp.SQL.Clear;
qryDisp.SQL.Add(´SELECT * FROM DBO.DATA0018 WHERE DB18_COD_PROD = ´´´ + qryAux.FieldByName(´DB15_COD_PROD´).AsString + ´´´´);
qryDisp.Open;
While not qryDisp.Eof do
begin
If qryDisp.FieldByName(´DB18_RESERVADO´).AsInteger > 0 then
trwProd.Items.AddChild(trwProd.Items[i], qryDisp.FieldByName(´DB18_COD_PROD_DISP´).AsString + ´ - RESERVADO´)
else
trwProd.Items.AddChild(trwProd.Items[i], qryDisp.FieldByName(´DB18_COD_PROD_DISP´).AsString);
qryDisp.Next;
end;
qryAux.Next;
i := i + 1;
end;
Obrigada.
Leio do banco uma query que me tráz todos os produtos de uma tabela. Então abro um laço de repetição e começo a criar os nós da árvore. Em cada produto que leio da query verifico em outra query se existe código de barras para ele, se existir listo como filhos. Bem o primeiro que tem filhos, aparece, mas a partir do segundo aparece em produto errado. Minha lógica:
trwProd.Items.Clear;
i := 0;
While not qryAux.Eof do
begin
trwProd.Items.Add(Nil, Frm_data0001.qryAux.FieldByName(´DB15_COD_PROD´).AsString)
qryDisp.SQL.Clear;
qryDisp.SQL.Add(´SELECT * FROM DBO.DATA0018 WHERE DB18_COD_PROD = ´´´ + qryAux.FieldByName(´DB15_COD_PROD´).AsString + ´´´´);
qryDisp.Open;
While not qryDisp.Eof do
begin
If qryDisp.FieldByName(´DB18_RESERVADO´).AsInteger > 0 then
trwProd.Items.AddChild(trwProd.Items[i], qryDisp.FieldByName(´DB18_COD_PROD_DISP´).AsString + ´ - RESERVADO´)
else
trwProd.Items.AddChild(trwProd.Items[i], qryDisp.FieldByName(´DB18_COD_PROD_DISP´).AsString);
qryDisp.Next;
end;
qryAux.Next;
i := i + 1;
end;
Obrigada.
Fernanda.sique
Curtir tópico
+ 0
Responder
Posts
20/03/2004
Vinicius2k
Fernanda,
Observe este exemplo que fiz para outro colega de como montar uma TTreeView a partir de um TPopupMenu...
Acredito que a lógica seja quase a mesma do que vc pretende...
vc precisa fazer uso de vários recursos como, pegar o último child, ler o índice absoluto, etc, para conseguir colocar os filhos no lugar correto...
espero ter ajudado e se precisar de mais ajuda, conte conosco...
T+
Observe este exemplo que fiz para outro colega de como montar uma TTreeView a partir de um TPopupMenu...
Acredito que a lógica seja quase a mesma do que vc pretende...
procedure MakeTree (Menu: TPopupMenu; Tree: TTreeView); var i, i2, n: integer; begin n:= 0; for i:= 0 to Menu.Items.Count - 1 do begin Tree.Items.Add(nil,(Menu.Items[i].Caption)); for i2:= 0 to Menu.Items[i].Count - 1 do begin if Tree.Items[i2].GetLastChild <> nil then n:= Tree.Items[n].GetLastChild.AbsoluteIndex + 1; Tree.Items.AddChild(Tree.Items[n],(Menu.Items[i].Items[i2].Caption)); end; end; end;
vc precisa fazer uso de vários recursos como, pegar o último child, ler o índice absoluto, etc, para conseguir colocar os filhos no lugar correto...
espero ter ajudado e se precisar de mais ajuda, conte conosco...
T+
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)