Array
(
)

Carregar treeview em tempo de execução com ADO / Access

N1
   - 06 set 2004

Pessoal,

A rotina abaixo tem um erro no número de interações que o sistema
faz em tempo de execução.
Preciso descobrir como fazer para t1.Items.Count-1 refletir o contador
em tempo de execução do número de nós do nível principal, pois a medida que o sistema vai lendo e inserindo na árvore os nós no sub-nível seguinte, ele conta somente os filhos e não os pais(level=0).

O bd tem os seguintes itens de teste:
Tabela2
tipo | desc
0 A
1 B
2 C
3 D
4 E
5 F
6 G
7 H
Tabela1
cod |diag | tipo
1 D1 3
2 D2 4
3 D3 0
4 D4 1
5 D5 2
6 D6 2
7 D7 4
8 D8 1
9 D9 3
10 D10 1

Se ao invés de t1.Items.Count-1 substituir por 12 ai sim faz corretamente.
O que está errado?




procedure TForm1.FormShow(Sender: TObject);
var
c,c1,c2:integer;
ult1,ult2:integer;
lido:string;
lidotipo:string;
begin
ADOTable2.Close;
ADOTable2.Open;
ADOTable2.First;

while ADOTable2.Eof = false do
begin
lidotipo:=ADOTable2desc.AsString;
t1.Items.add(nil,lidotipo);
ADOTable2.Next;
end;
for c:=0 to t1.Items.Count-1 do
begin
ADOTable1.Close;
ADOTable1.Open;
ADOTable1.First;
while ADOTable1.Eof = false do
begin
lido:=ADOTable1DIAG.Value;
if (t1.Items.Item[c].Index) = ADOTable1tipo.AsInteger then
begin
if ((t1.Items.Item[c].HasChildren = false) and (t1.Items.Item[c].level=0)) then
begin
t1.Items.Addchild(t1.Items.Item[c],lido);
end
else
if ((t1.Items.Item[c].HasChildren = true) and (t1.Items.Item[c].level=0)) then
begin
t1.Items.Addchild(t1.Items.Item[c],lido);
end;
end;
ADOTable1.Next;
end;
end;
end;
end.


Macario
   - 07 set 2004

neste caso voce não precisa do -1.


for c:=0 to t1.Items.Count do

espero ter ajudado.


N1
   - 09 set 2004

Macario,

Mesmo não colocando o -1, não funciona. O contador não está atualizando
para os nós finais.