Как лучше считать дерево из таблицы БД в TreeView
Как лучше считать дерево из таблицы БД в TreeView
Как лучше считать дерево из таблицы БД в TreeView Говорят есть удобный компонент dbtreeview, но я не смог достать нормально работающий и потом их так много в разных библиотеках : polaris, rxlib, ralib и т.п. Где лучше. Взял вроде из polaris, но там только pas файл и он просит модуль Тooledit.dcu , который я найти не смог. -------------- Можно не искать компоненты а самому считать дерево из таблицы вида : Поля : id уникальный индекс, firstid ссылка на родителя, name название. Затем пишешь процедуру : procedure readtree( intrn : integer; treenodetemp: ttreenode; ttree : ttreeview ); var qenode: tquery; bflag: boolean; begin qenode := tquery.create( nil ); qenode.databasename := -- как там у тебя qenode.close; qenode.sql.clear; bflag := false; if intrn = -1 then begin qenode.sql.add('select id, firstid, name'); qenode.sql.add('from " work.db" '); qenode.open; qenode.first; intrn := qenode.fieldbyname('id').asinteger; qenode.close; qenode.sql.clear; bflag := true; end; qenode.sql.add('select id, firstid, name'); qenode.sql.add('from " work.db" where firstid = '+inttostr(intrn)); qenode.open; qenode.first; while not qenode.eof do begin if bflag = true then readtree(qenode.fieldbyname('id').asinteger, ttree.items.addobject(nil, inttostr(qenode.fieldbyname('id').asinteger)+':'+ inttostr(qenode.fieldbyname('firstid').asinteger)+':'+ qenode.fieldbyname('name').asstring, nil), ttree) else readtree(qenode.fieldbyname('id').asinteger, ttree.items.addchildobject(treenodetemp, inttostr(qenode.fieldbyname('id').asinteger)+':'+ inttostr(qenode.fieldbyname('firstid').asinteger)+':'+ qenode.fieldbyname('name').asstring, nil), ttree); //рекурсия qenode.next; end; qenode.close; qenode.destroy; end; Рекурсивно вызываешь у себя при формировании дерева и все Вызов следующий : readtree( -1, nil, {имя объекта treeview} );