Hola
Los campos que yo tendria en mi BD serian
codigo, descripcion, nivel de tipo string, puedes tener otros mas pero esos me parecen los que te armarian el arbol.
Lo que se me ocurre que puede ser que no sea lo mejor pero aqui te lo pongo, alguien que encuentre una solución mejor supongo que te respondera tambien.
Crear un archivo con tabulaciones en base al nivel osea:
nivel 1 -> ninguna tabulacion
nivel 2 -> 1 tabulacion
nivel 3 -> 2 tabulaciones
y asi sucesivamente porque tu arbol puede tener n niveles
Código Delphi
[-]
var
archivo:TextFile;
begin
ruta:=ExtractFileDir(Application.ExeName) + '\' + 'arch.txt';
ASSIGNFILE(archivo,ruta);
ReWrite(Archivo);
sql:='SELECT codigo, descripcion, nivel FROM tabla ORDER BY codigo';
qry.First;
while not(qry.Eof) do
begin
codigo:=qry.Fields[0].AsString;
descripcion:=qry.Fields[1].AsString;
nivel:=qry.Fields[2].AsString;
descripcion_fin:=StringofChar(#32,strtoint(nivel)-1)+descripcion;
WriteLn(Archivo,descripcion_fin);
qry.Next;
end;
con eso tendrias tu archivo creado con tabulaciones y todo ahora seria cargarlo dentro del arbol que seria de esta forma
Código Delphi
[-]
TreeView.LoadFromFile(ExtractFilePath(Application.ExeName)+'arch.txt');
conste suponiendo que estamos manteniendo la codificación del codigo que pusiste y que seria de tipo string para que te lo ordene de la forma que tu quieres, otra forma seria hacerlo recursivo pero nose como, eso seria espero te sirva chausito.