Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизДеревья и рекурсия Найти похожие ветки
← →
ydv (2004-07-12 11:37) [0]Есть такая задачка.
Дана таблица вида:
codeup name codethis
0 | Авто | 10
0 | Мото | 20
10 | Жигули | 40
20 | Ява | 50
40 | модель 2106| 60
50 | модель 350 | 70
40 | модель 2109| 80
в результате некоторой обработки получается дерево вида:
-Авто
-Жигули
-модель 2106
-модель 2109
-Мото
-Ява
-модель 350
Стоит задача выбрать все элементы, относящиеся, например, к ветке Авто. Понимаю, что надо применять рекурсию. А вот как - не знаю.
← →
MBo © (2004-07-12 11:59) [1]логика:
procedure SelectChilds(Item:TTreeItem);
для каждого Child do begin
выбрать его;
SelectChilds(Child);
end;
← →
ydv (2004-07-12 12:22) [2]Дело в том, что это не VCL-дерево (TTreeView), а просто таблица, которую можно представить в виде дерева для наглядности.
← →
Sheng © (2004-07-12 12:25) [3]Напиши, каким образом представлены данные после обработки (пример кода - описание массива)
← →
ydv (2004-07-12 12:33) [4]а никаким, просто есть таблица и всё, которую можно в виде дерева представить, а можно и не представлять. Главная задача - выбирать все подчиненные элементы до самого последненго уровня и заполнять другую таблицу.
← →
MBo © (2004-07-12 12:34) [5]>Дело в том, что это не VCL-дерево (TTreeView), а просто таблица
Ничего в принципе не изменится - вместо типа TTreeItem твой будет, а детишки у тебя - раз имеется дерево - значит, как-то организованы.
← →
Sheng © (2004-07-12 12:45) [6]codeup name codethis selected
0 | Авто | 10 | no
0 | Мото | 20 | no
10 | Жигули | 40 | no
20 | Ява | 50 | no
40 | модель 2106| 60 | no
50 | модель 350 | 70 | no
40 | модель 2109| 80 | no
procedure Sel(Num: Integer);
var
i: Integer;
begin
for i:=1 to Length(Массив) do
if Массив[1,i]=Num then // проверяем принадлежность
begin
Массив[4,i]:=True; // помечаем как выбранный
Sel(Массив[3,i]); // вызываем со сл. типом
end;
end;
вызов: Sel(10);
теоретически, должно работать
← →
ydv (2004-07-12 13:09) [7]Ок. Попробую.
← →
Sheng © (2004-07-12 13:34) [8]Да, и ещё в условии надо поставить проверку, если элемент не выделен.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c