Hola Ibidi.
Me pregunto si el campo Nivel no será numerico...
Proba de este modo:
Código Delphi
[-]
...
begin
nodo0:= tvCatalogo.Items.AddFirst(nil, 'ARTICULOS');
while not Qry_Cata.Eof do
begin
case Length(Qry_Cata.FieldByName('Nivel').AsString) of
2:begin
nodo1:= tvCatalogo.Items.AddChild(nodo0, Qry_Cata.FieldByName('Texto').AsString);
nodo1.Data:= Pointer(Qry_Cata.FieldByName('Nivel').AsInteger);
end;
4:begin
nodo2:= tvCatalogo.Items.AddChild(nodo0, Qry_Cata.FieldByName('Texto').AsString);
nodo2.Data:= Pointer(Qry_Cata.FieldByName('Nivel').AsInteger);
end;
...
end;
Qry_Cata.Next;
end;
tvCatalogo.FullExpand;
end;
...
procedure TForm1.tvCatalogoClick(Sender: TObject);
var
Nodo: TTreeNode;
begin
Nodo:= tvCatalogo.Selected;
if Assigned(Nodo) and (Nodo.Level > 0) then
ShowMessage(IntToStr(Integer(Nodo.Data)));
end;
Saludos.