Estimados todos.
He revisado varios hilos sobre este tema pero no he logrado hacer que funcione.
Tengo un query que lee de una base que tiene 2 campos, nivel y texto, es un catalogo de ropa
en la cual el nivel indicaria el nodo del arbol y texto , el contenido.
ej :
01 HOMBRES
0101 PANTALONES
010101 CUERO
02 MUJER
0201 VESTIDOS
etc,
etc
El codigo que tengo para leer esto es el siguiente.
Código Delphi
[-]
var
nodo0, nodo1, nodo2, nodo3, nodo4 : TTreeNode;
n : Integer;
begin
nodo0 := tv_Catalogo.Items.AddFirst( nil, 'ARTICULOS' );
Qry_Cata.SQL.Clear;
Qry_Cata.SQL.Add('Select * from Catalogo');
Qry_Cata.SQL.Add('Order by Nivel');
Qry_Cata.Open;
while not Qry_Cata.Eof do
begin
n := Length( Qry_Cata.FieldByName('Nivel').AsString ) ) ;
case n of
2 :
begin
nodo1 := tv_Catalogo.Items.AddChild( nodo0, Qry_Cata['Texto'] );
nodo1.Data := Pointer( Qry_Cata.FieldByName('Nivel').AsString);
nodo1.MakeVisible;
end;
4 :
begin
nodo2 := tv_Catalogo.Items.AddChild( nodo1, Qry_Cata['Texto'] );
nodo2.Data := Pointer( Qry_Cata.FieldByName('Nivel').AsString);
nodo2.MakeVisible;
end;
6 :
begin
nodo3 := tv_Catalogo.Items.AddChild( nodo2, Qry_Cata['Texto'] );
nodo3.Data := Pointer( Qry_Cata.FieldByName('Nivel').AsString);
nodo3.MakeVisible;
end;
8 :
begin
nodo4 := tv_Catalogo.Items.AddChild( nodo3, Qry_Cata['Texto'] );
nodo4.Data := Pointer( Qry_Cata.FieldByName('Nivel').AsString);
nodo4.MakeVisible;
end;
end;
Qry_Cata.Next;
end;
Funciona bien y arma perfectamente el arbol.
Lo que necesito hacer luego es volver a grabar el arbol en la base de datos, por las modificaciones que pudo haber tenido.
Como hago para obtener el valor "nivel" almacenado en la propiedad data del nodo ?
Gracias.