Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

Как лучше считать дерево из таблицы БД в TreeView?   Найти похожие ветки 

 
alll_23   (2007-10-24 16:41) [0]

Здравствуйте это снова я со своим вопрос по TreeVew недавно Сергей М. дал мне ссылочку на вот этот документ

Как лучше считать дерево из таблицы БД в 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} );

Всё сделал так же только помял TQuery  на TIBQuery только я не создаю TIBQuery а он у меня заранее лежит на форме. И не работает у меня ничиге, помогите разобраться приз!


 
Сергей М. ©   (2007-10-24 16:47) [1]


> alll_23   (24.10.07 16:41)


И что толку оттого что ты клянчил "примеры" ?

Ну вот он, пример вожделенный .. И смотришь ты на него как баран на новые ворота)

Примеры даются не для тестирования на "работает - не работает", а для самостоятельного изучения логики !

Ну да ладно... Что говорит отладчик по этому поводу ?


 
alll_23   (2007-10-24 16:50) [2]

Ничего не говорит, неправильно строится дерево


 
Сергей М. ©   (2007-10-24 16:52) [3]

Ну так пройди пошагово по всей этой процедуре и контролируй, что происходит при выполнении каждого оператора !



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.019 c
2-1193039709
F@T@L_Err0r
2007-10-22 11:55
2007.11.18
Папки


2-1193301007
Вася
2007-10-25 12:30
2007.11.18
Конвертация целого


6-1173887404
Gilrods
2007-03-14 18:50
2007.11.18
Выбор сетевого подключения для программы.


2-1193148559
malyar
2007-10-23 18:09
2007.11.18
получить имя файла без расширения


2-1193041648
alll_23
2007-10-22 12:27
2007.11.18
TTreeView