Текущий архив: 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.45 MB
Время: 0.032 c