Основы работы с элементом TreeView, иерархической структуры данных.
В начале работы с элементом TreeView изучим его настройки. Добавьте элемент TreeView на форму, щёлкните по нему правой кнопкой мыши и выберите в контекстном меню команду Properties (Свойства). Окно свойств элемента TreeView разделено на три вкладки: Font (шрифт), Picture (рисунок) и General (общие). На вкладке General устанавливается стиль списка и несколько общих атрибутов. Свойство задаёт внешний вид данных, отображаемых элементом, а также используемый способ навигации.
Установки свойства Style
Константа
Значение
Описание
tvwTextOnly
0
Только текст
tvwPictureText
1
Рисунок и текст
tvwPlusMinusText
2
Знаки плюс/минус и текст
tvwPlusPictureText
3
Знаки плюс/минус, рисунок и текст
tvwTreelinesText
4
Древовидная схема и текст
tvwTreelinesPictureText
5
Древовидная схема, рисунок и текст
tvwTreelinesPlusMinusText
6
Древовидная схема, знаки плюс/минус и текст
tvwTreelinesPlusMinusPictureText
7
Древовидная схема, знаки плюс/минус, рисунок и текст
Флажки в правой части вкладки General позволяют установить общие атрибуты элемента: HideSelection - определяет, должен ли выбранный пункт подсвечиваться при переходе фокуса на другой элемент управления. Sorted - устанавливает или отменяет автоматическую сортировку пунктов элемента. В отличие от свойств Sorted элемента ListBox свойство Sorted элемента TreeView устанавливается либо при конструировании, либо при выполнении приложения. При установке значения свойства Sorted в True существующие пункты элемента автоматически вставляются в соответствующую позицию. Если установить значение свойства равным False, порядок сортируемых пунктов не изменится, а новые элементы по мере ввода будут добавляться в конец дерева. FullRowSelect - определяет подсвечивание всей строки выбранного пункта и возможность выбора пункта щелчком вне текста. CheckBoxes - отображает флажок перед каждым пунктом. Это необходимо для множественной выборки пунктов. SingleSel - разрешает пользователю выборку множества пунктов. Scroll - показывает/скрывает полосу прокрутки, когда содержимое элемента превышает его размеры. HotTracking - определяет, должен ли подсвечиваться пункт при помещении на него указателя мыши. Когда значение этого свойства установлено в True, поведение элемента TreeView напоминает поведение HTML документа со вставленными гиперссылками.
Работа с пунктами TreeView
Пункты или узлы элемента TreeView являются членами семейства Nodes. Для доступа к этому семейству используйте следующее выражение, где [Tree] - имя элемента TreeView:
[Tree].Nodes
Add - добавляет новый узел в семейство Nodes. Count - возвращает число узлов семейства Nodes. Clear - удаляет из семейства все узлы. Item - возвращает узел, указанный значением Index или ключом. Remove - удаляет узел из семейства Nodes.
Чтобы включить в семейство новый узел с помощью метода Add, следует указать его положение в иерархии, текст узла, его ключ, рисунок перед узлом и рисунок, который должен появиться при выборе узла. Синтаксис метода таков:
Синтаксис трёх операторов для обеих кнопок идентичен. Первый аргумент - ключ того узла, под которым вы хотите поместить новый узел. Второй - задаёт отношение (relationship) между узлом, указанным первым аргументом и новым узлом. Поскольку данные о сайте необходимо отображать ниже узла "Технологии программирования", их отношением является tvwChild (новый узел является дочерним существующему).
Установки аргумента Relationship
Константа
Значение
Описание
tvwFirst
0
Помещает узел перед всеми узлами уровня, на котором находится узел, указанный аргументом Relative
tvwLast
1
Помещает новый узел после всех узлов того уровня, на котором находился узел, указанный аргументом Relative
tvwNext
2
Помещает новый узел после узла, указанного аргументом Relative (установлен по умолчанию)
tvwPrevious
3
Помещает новый узел перед узлом, указанным аргументом Relative
tvwChild
4
Новый узел устанавливается как дочерний для узла, указанного аргументом Relative
Обратите внимание: аргумент Relationship задаёт отношения нового узла с существующим, указанным аргументом Relative. Значение tvwChild устанавливает новый узел как дочерний для узла, указанного аргументом Relative, а значение tvwNext устанавливает новый узел после узла, указанного аргументом Relative. По умолчанию узлы элемента TreeView не раскрываются, но Вы можете раскрыть узел Item из программного кода:
[Tree.Nodes.Item("WebSite").Expanded = True
Доступ к пунктам семейства Nodes можно получить по значению Index или по ключу. Чтобы перечислить содержание какого - либо из узлов вместе с дочерними узлами и их содержанием, надо использовать рекурсивный метод сканирования.
Последние два аргумента метода Add - Image и SelectedImage - это два рисунка, отображаемые перед узлом. Рисунок Image отображается перед узлом по умолчанию, а при выборе узла он заменяется рисунком SelectedImage. Оба аргумента являются объектами типа Picture. Они могут быть значениями свойства Picture элемента PictureBox либо загружаться из файла во время выполнения приложения с помощью функции LoadPicture:
[Tree].Nodes.Add "WebSite", tvwChild, , "Popularity", LoadPicture ("c:aleximagespeople.ico") или изменить картинку уже существующего элемента [Tree].Nodes.Item("WebSite").Picture = LoadPicture ("c:aleximagesinternet.ico")
Более простой способ - создать элемент ImageList и заполнить его рисунками. Чтобы добавить три новых узла и назначить для них три значка, воспользуйтесь операторами:
Номера соответствуют индексам рисунков в элементе ImageList. Если при включении рисунков в элемент ImageList вы назначили значения ключей, то можете воспользоваться ими.