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