Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.01.2019, 12:48   #1
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
Вопрос Построение дерево

Добрый день
у меня очень срочная проблема которую нужно решит
Заранее всех прошу не давайте ссылок типа прочитай статью насчет построения дерево, вот полезные линки и тд
я очень долго искал но нечего не нашел
поэтому прошу кто может помоч проста напишите конкретный код буду очень блогодарень
Задача:
Есть таблица TAB1
в таблице 2 столбца Field1 и Field2
В Field1 имена веток дерево
В Field12 категория дерево

sc1.png

Если в Field2 значение 1 это значет что new item (для treeview)
Если в Field2 значение 2 это значет что 2 ето subitem для 1
Если в Field2 значение 3 это значет что 3 ето subitem для 2
Если в Field2 значение 4 это значет что 4 ето subitem для 3

и тд

нужно построит дерево в treeview точно так как у нас в БД
но дело в том что не всегла обязательно 3 после 2 , 4 после 3 и тд
может быть и так
Код:
1
2
2
3
4
2
2
3
1
1
2
3
4
1
2
3
3
4
sc2.png

Вот так должен выглядеть в treeview (Сделал вручную а нужно чтобы автоматически сделал
очень прошу выручайте
ЗАРАНЕЕ Огромное спасибо
mr_xxx вне форума Ответить с цитированием
Старый 20.01.2019, 13:38   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var m: array[0..4] of TTreeNode;
begin
  m[0]:=nil;
  xDataSet.First;
  while not xDataSet.Eof do begin
    m[xDataSet.FieldByName('Field2').AsInteger]:=TreeView1.Items.AddChild(m[xDataSet.FieldByName('Field2').AsInteger-1],xDataSet.FieldByName('Field1').AsString);
    xDataSet.Next;
  end;
end;
Это если в датасете все правильно и 4 уровня. Иначе конфуз ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 20.01.2019, 19:16   #3
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Код:
procedure TForm1.Button1Click(Sender: TObject);
var m: array[0..4] of TTreeNode;
begin
  m[0]:=nil;
  xDataSet.First;
  while not xDataSet.Eof do begin
    m[xDataSet.FieldByName('Field2').AsInteger]:=TreeView1.Items.AddChild(m[xDataSet.FieldByName('Field2').AsInteger-1],xDataSet.FieldByName('Field1').AsString);
    xDataSet.Next;
  end;
end;
Это если в датасете все правильно и 4 уровня. Иначе конфуз ))
Спасибо огромное но пишет error.jpg

Код:
procedure TForm1.Button1Click(Sender: TObject);


var m: array[0..4] of TTreeNode;
begin


FDQuery1.SQL.Text:='select * from tab1';
FDQuery1.Open;
  m[0]:=nil;
  FDQuery1.First;
  while not FDQuery1.Eof do begin
    m[FDQuery1.FieldByName('field2').AsInteger]:=TreeView1.Items.AddChild(m[FDQuery1.FieldByName('field2').AsInteger-1],FDQuery1.FieldByName('field1').AsString);
    FDQuery1.Next;
  end;
end;
mr_xxx вне форума Ответить с цитированием
Старый 20.01.2019, 19:36   #4
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
По умолчанию

Все работает там field2 было 0 из за этого

Аватар - Спасибо огромное
mr_xxx вне форума Ответить с цитированием
Старый 20.01.2019, 20:16   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Цитата:
select * from tab1
Такой запрос не гарантирует нужную упорядоченность, считай что повезло )
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 21.01.2019, 07:32   #6
mr_xxx
Пользователь
 
Регистрация: 22.03.2012
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Такой запрос не гарантирует нужную упорядоченность, считай что повезло )
Еще раз спасибо за точный конкретный ответ
mr_xxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C# Задание с деревьями 1)Построить двоичное дерево и вывести его на экран 2)построить двоичное дерево поиска ekzo Фриланс 3 21.01.2017 06:23
C# Задание с деревьями 1)Построить двоичное дерево и вывести его на экран 2)построить двоичное дерево поиска ekzo Помощь студентам 0 20.01.2017 12:00
дерево jekie182 Паскаль, Turbo Pascal, PascalABC.NET 1 27.04.2012 15:40
Дерево Igemon93 Общие вопросы C/C++ 0 14.04.2012 18:56
дерево С# Natok Помощь студентам 0 14.09.2009 23:42