|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.10.2019, 21:53 | #1 |
Пользователь
Регистрация: 04.05.2009
Сообщений: 50
|
treeview дельфи
Добрый вечер, уважаемые программисты!
Нужна помощь в решении данного вопроса по построению дерева treeview из одной таблицы. Скрин приложил, слева результат, что именно хочется, справа данные одной таблицы для дальнейшего построения. Действующий код по построению написал, используя циклы из 3 таблиц, но для этого уходит много времени. Думаю понятно разложил Безымянный.png Заранее спасибо за помощь! |
07.10.2019, 09:44 | #2 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
нужно то что ?
построить ТРЕХ уровневое дерево 1. gruppa (или roles?!) 2. roles (gruppa) 3. конечный пользователь(специалист) ФИО Цитата:
циклы по просмотру единого (з-x частного) НД (3 НД -по одному на каждый уровень) ? I. могут помочь скобки "отключения" реакции обновления 1. DataSet.DisableControls; //особенно если у нас есть "бесконечное" блуждание по НД в поисках записей подходящих именно данному узлу. 2. TreeView.Items.BeginUpdate; до начала циклов построения(всех), вместе с соответствующими "закрывающими" скобками после циклов построения II. З полных набора (таблицы) для построения ВСЕГО дерева 1. строим первый уровень и ЗАПОМИНАЕМ где у нас что. - берем таблицу первого уровня и добавляем узлы отмечая(запоминая) где что. "индексный" массив узлов первого уровня 2. строим второй уровень берем таблицу второго уровня и добавляем узлы в соответствии с нашими отметками(см.1) "индексный" массив второго уровня 3.строим третий уровень. на основе наших "индексных" массивов. III. берем полную таблицу (вся информация для построения узла любого уровня в одной) строи ДВА пустых индексных массива (первый, второй уровень) берем запись. ищем узел первого уровня НЕТ добавляем и заносим в массив ДА значит будем добавлять сюда ищем узел второго уровня НЕТ добавляем В найденный(или В только что созданный), включаем. ДА ... узел третьего уровня просто добавляем В найденный узел. в конце-то концов индексный массив может быть и двумерным [ первый уровень, второй уровень ] IV. берем УПОРЯДОЧЕННЫЙ по gruppa, roles НД третьего уровня. 1.проверяем (находим и/или если надо добавляем) узлы второго и первого уровня. 2.добавляем ВСЕХ специалистов данного узла они будут в НД рядом(идти последовательно) по условию упорядоченности 3.если можем переходим к п.1.
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 07.10.2019 в 09:53. |
|
07.10.2019, 18:33 | #3 |
Пользователь
Регистрация: 04.05.2009
Сообщений: 50
|
Вот собственно рабочий код
Код:
|
07.10.2019, 23:05 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.10.2019, 18:30 | #5 |
Пользователь
Регистрация: 04.05.2009
Сообщений: 50
|
данный запрос думаю никак не поможет для дальнейшего построения дерева
|
09.10.2019, 18:51 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Почему? При изменении r.id добавляй узел 1-го уровня, при изменении d.name - 2-уровня и для каждой записи - соответственно узел 3-го уровня. то же самое что в твоем коде, только одним запросом и без запроса в цикле. Думаю быстрей будет существенно
add Там есть нюанс - записей из pilot и division может и не быть для некоторых из roles. Тогда проверять на null соответствующие поля и не строить узлы 2-го и 3-го уровня
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Последний раз редактировалось Аватар; 09.10.2019 в 19:50. |
09.10.2019, 20:58 | #7 |
Пользователь
Регистрация: 04.05.2009
Сообщений: 50
|
Поторопился с ответом. Как раз помог ваш запрос для дальнейшего построения дерева без цикла. Спасибо за помощь! Тема закрыта
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TreeView | Mr.Steroid | Общие вопросы Delphi | 10 | 30.10.2013 21:29 |
ASP.NET C# компонент TreeView. Перетащить какой - либо пункт меню из TreeView в TextBox | Claster | ASP.NET | 0 | 02.01.2013 18:59 |
TreeView | Gudzik11 | Общие вопросы Delphi | 2 | 28.05.2012 14:07 |
таблицы подстановок в дельфи(базы данных в дельфи) | ManiagoZ | БД в Delphi | 0 | 15.05.2011 15:07 |
TreeView | W0LF | Общие вопросы Delphi | 3 | 10.04.2010 17:10 |