|   
| Для зарегистрированных пользователей |        | Иерархические структуры в VB
 Древовидные, иерархические структуры могут быть описаны различными способами. Выбор способа описания зависит от множества факторов: 
необходимость и интенсивность редактирования структуры 
требование доступа к данным с помощью SQL 
скорость доступа к определённым элементам 
необходимость поддержки порядка следования узлов, отличного от алфавитного Существует несколько способов отображения иерархических структур.В первую очередь это классический TreeView. Элемент управления, используемый в VB неполноценен и для реализации некоторых функций приходиться пользоваться нестандартными приёмами.
 Альтернативой ему могут служить различные Grid'ы в которых реализована возможность отображения иерархий. Это vsFlexGrid и некоторые другие. Важным преимуществом таких решений является возможность отображения данных с разбивкой на колонки.
 Для навигации в иерархических структурах можно обойтись и без деревьев. Хорошим примером этому может служить стандартное диалоговое окно открыть \ сохранить обеспечивающее доступ к файловой системе.
 Для отображения иерархий могут служить и элементы управления изначально для этого не предназначенные. Например, есть примеры использования списков. Еще более интересен пример, в котором TreeView реализован на основе PictureBox.
 Но наиболее эффектные решения могут быть получены с использованием WebBrowser.
 Тут представлены два моих VB проекта, демонстрирующих различные подходы к иерархическим структурам. 
 
|  TreeViewDemo
 |  
|   |  
| В этой программе используется связанный список, хранимый в БД Access и элемент управления TreeView. Каждый узел содержит: 
указатель на предка 
указатель на потомка 
указатель на предыдущего соседа 
указатель на следующего соседа 
признак раскрытия узла 
признак выделения узла Благодаря этой схеме любая операция с элементом требует модификации максимум трёх узлов. В программе реализованы следующие функции: 
Вставить узел перед текущим 
Вставить узел после текущего 
Вставить узел потомком текущего 
Поменять узел с вышестоящим 
Поменять узел с нижестоящим 
Выровнять с предком 
Понизить уровень 
Удалить |  
| Скачать исходник. |  
 
|  OutlineDemo
 |  
|   |  
| Этот пример - результат перевода кода ASP проекта в VB. В примере три ключевые особенности 
Источником данных служит БД Access, а провайдером данных является MSDataShape 
Для отображения данных используется элемент управления WebBrowser. При этом создаётся полноценная иерархическая структура. Отображение / скрытие узла реализовано с помощью стиля элемента 'display' 
Для объединения строк используется специальная процедура, которая значительно быстрее оператора & |  
| Скачать исходник. |  
 |