Дерево
![]() | |||||||
---|---|---|---|---|---|---|---|
|
Объект дерево является удобным способом хранения структурированной информации и может быть представлен визуально деревом значений, которое, кроме произвольной информации, может содержать структуру папок справочника. Дерево состоит из веток, каждая ветка может содержать произвольное значение, с каждой веткой может быть ассоциировано также строковое значение (наименование), каждая ветка может иметь произвольное количество дочерних веток. Другие свойства, присущие веткам: индекс галочки (см. Checked), индекс иконки (см. Icon), цвет фона может быть задан для каждой ветки в отдельности (к примеру, для выделения веток), цвет текста может быть задан для каждой ветки в отдельности, стиль шрифта (полужирный, наклонный и пр.) может быть задан для каждой ветки в отдельности, ветку можно сделать визуально недоступной, также можно программно раскрыть или закрыть ветку (в раскрытой ветке видны ее дочерние элементы, в закрытой они спрятаны).
При программной работе с объектом нужно различать два типа объектов, ассоциирующихся с деревом: само дерево, и объект ветки. При обходе дерева с помощью функций типа Next, ByIndex и пр. получаемые объекты являются объектами веток, каждый такой объект можно изменять и большинство функций объекта дерева работают с объектами ветки и наоборот. Однако, есть и отличия. К примеру, все визуальные свойства (типа цвета текста) можно устанавливать только для объекта ветки. Для объекта дерева также существует внутренний указатель на выбранную визуально пользователем ветку, которую можно получить или изменить с помощью атрибута Selected.
Для объекта ветки существует особое состояние -- ветка-сирота. Такие ветки не привязаны ни к какому дереву и являются самостоятельными объектами, при этом часть функций обычной ветки для них недоступна. Такие ветки получаются в случае, если объект дерева удаляется из системы, однако, объект ветки хранится в каких-либо внешних переменных или объектах и не может быть удален в данное время.
Атрибуты и функции
Идентификатор | Статус | Тип | Визуальная | Параметры | Описание |
---|---|---|---|---|---|
[<Индекс значения (INT,STRING)>] | Реализована | Атрибут | Tree[<Индекс или наименование значения подчиненной ветки (INT,STRING)>,...]:<Значение или ветка> | Применимо к объектам ветки и дерева. Использование синтаксиса массивов позволяет получить или изменить значение подчиненной ветки дерева по его индексу (аргументом является число), либо наименованию (аргументом является строка). | |
Create | Реализована | Функция | Tree.Create:<Новый объект (TREE)> | Функция создает новый объект дерева. | |
Tree | Реализована | Атрибут | Tree.Tree:<Объект дерева (TREE)> | Применимо к объекту ветки. Атрибут получает объект дерева из текущего объекта ветки. | |
Value | Реализована | Атрибут | Tree.Value:<Значение текущей ветки> | Применимо к объекту ветки. Атрибут получает или устанавливает значение текущей ветки. | |
Name | Реализована | Атрибут | Tree.Name:<Наименование текущей ветки (STRING)> | Применимо к объекту ветки. Атрибут получает или устанавливает наименование текущей ветки. | |
SelectedValue | Реализована | Атрибут | Да
|
Tree.SelectedValue:<Значение выбранной визуально ветки> | Применимо к объекту дерева. Атрибут получает или устанавливает значение выбранной визуально ветки. |
SelectedValueName | Реализована | Атрибут | Да
|
Tree.SelectedValueName:<Наименование выбранной визуально ветки (STRING)> | Применимо к объекту дерева. Атрибут получает или устанавливает наименование выбранной визуально ветки. |
Icon | Реализована | Атрибут | Да
|
Tree.Icon:<Индекс иконки текущей ветки (INT)> | Применимо к объекту ветки. Атрибут получает или устанавливает индекс иконки текущей ветки. |
Checked | Реализована | Атрибут | Да
|
Tree.Checked:<Индекс галочки текущей ветки (INT)> | Применимо к объекту ветки. Атрибут получает или устанавливает индекс галочки текущей ветки. |
CheckboxType | Реализована | Атрибут | Да
|
Tree.CheckboxType:<Тип галочки текущей ветки (INT)> | Применимо к объекту ветки. Атрибут получает или устанавливает тип галочки текущей ветки. |
IsVisible | Реализована | Атрибут | Да
|
Tree.IsVisible:<Видимость текущей ветки (INT)> | Применимо к объекту ветки. Атрибут получает или устанавливает визуальную видимость текущей ветки. |
IsExpanded | Реализована | Атрибут | Да
|
Tree.IsExpanded:<Раскрыта ли текущая ветка (INT)> | Применимо к объекту ветки. Атрибут раскрывает или закрывает текущую ветку, либо получает ее статус. |
IsInitialized | Реализована | Атрибут | Да
|
Tree.IsInitialized:<Инициализирована ли текущая ветка (INT)> | Применимо к объекту ветки. Атрибут получает флаг, была ли ветка визуально инициализирована (для неинициализированных веток система вызывает визуальное событие OnInitLeaf, в процессе которого программа может заполнять такие свойства ветки, как наличие дочерних веток, стиль и пр.). |
IsDisabled | Реализована | Атрибут | Да
|
Tree.IsDisabled:<Флаг недоступности текущей ветки (INT)> | Применимо к объекту ветки. Атрибут устанавливает или получает флаг недоступности редактирования ветки. |
IsSelected | Реализована | Атрибут | Да
|
Tree.IsSelected:<Выбрана ли текущая ветка визуально (INT)> | Применимо к объекту ветки. Атрибут устанавливает или получает признак того, что текущая ветка выбрана визуально. |
Selected | Реализована | Атрибут | Да
|
Tree.Selected:<Выбранная визуально ветка (BRANCH)> | Применимо к объектам ветки и дерева. Атрибут устанавливает или получает текущую выбранную визуально ветку. |
Level | Реализована | Атрибут | Tree.Level:<Уровень вложенности ветки на дереве (INT)> | Применимо к объекту ветки. Атрибут получает уровень вложенности текущей ветки относительно дерева. Для веток-сирот, эта функция возвращает 0, Для веток, прикрепленных к дереву, функция возвращает 1, для веток, прикрепленных к ветках с уровнем 1, функция возвращает 2 и т.д. | |
Index | Реализована | Атрибут | Tree.Index:<Индекс текущей ветки на ветке-родителе (INT)> | Применимо к объекту ветки. Атрибут получает или устанавливает позиционный индекс текущей ветки в массиве веток ветки-родителя (или дерева). Если ветка является веткой-сиротой, функция возвращает 0. При изменении индекса, ветка перемещается относительно соседей соответствующим образом. | |
Parent | Реализована | Атрибут | Tree.Parent:<Ветка-родитель текущей ветки или само дерево (BRANCH,TREE)> | Применимо к объекту ветки. Атрибут получает или устанавливает ветку родителя текущей ветки. Если ветка прикреплена к непосредственно дереву, функция возвращает пустое значение. При установке этого атрибута ветка перемещается соответствующим образом в структуре дерева. Для указания того, что ветка перемещается в самый верхний уровень, в атрибут можно записывать объект дерева. | |
BackgroundColor | Реализована | Атрибут | Да
|
Tree.BackgroundColor:<Цвет фона текущей ветки (INT)> | Применимо к объекту ветки. Атрибут устанавливает или получает цвет фона текущей ветки. |
FontColor | Реализована | Атрибут | Да
|
Tree.FontColor:<Цвет текста текущей ветки (INT)> | Применимо к объекту ветки. Атрибут устанавливает или получает цвет текста текущей ветки. |
FontStyle | Реализована | Атрибут | Да
|
Tree.FontStyle:<Стиль шрифта текущей ветки (INT)> | Применимо к объекту ветки. Атрибут устанавливает или получает стиль шрифта текста текущей ветки. |
Clear | Реализована | Функция | Tree.Clear() | Очищает содержимое дерева. | |
CopyTo | Реализована | Функция | Tree.CopyTo(<Объект в который происходит копирование>,<Индекс начальной ветки копирования (INT),<Количество веток для копирования (INT)>) | Применимо к объектам ветки и дерева. Функция осуществляет копирование значений дочерних веток текущего объекта в указанный объект (другого дерева, списка или таблицы значений). | |
LoadFrom | Планируется | Функция | Tree.LoadFrom(<Объект из которого происходит копирование>) | Применимо к объектам ветки и дерева. Функция осуществляет загрузку значений из указанного объекта. | |
Size | Реализована | Функция | Tree.Size(<Новое количество веток текущего объекта (INT)>):<Количество веток текущего объекта (INT)> | Применимо к объектам ветки и дерева. Функция получает или изменяет количество подчиненных веток текущего объекта. При добавлении, новые ветки будут заполнены пустыми значениями. | |
Add | Реализована | Функция | Tree.Add(<Добавляемый объект>,<Наименование добавляемой ветки (STRING)>,<Индекс иконки добавляемой ветки (INT)>):<Объект добавленной ветки (BRANCH)> | Применимо к объектам ветки и дерева. Функция добавляет новую ветку к массиву дочерних веток текущего объекта. Для ветки задается объект, и, если требуется, наименование и индекс иконки. Функция возвращает объект добавленной ветки. | |
Insert | Реализована | Функция | Tree.Insert(<Индекс для вставки новых веток (INT)>,<Добавляемый объект>,<Наименования добавляемых веток (STRING)>,<Индекс иконки добавляемых веток (INT)>,<Количество добавляемых веток (INT)>=1) | Применимо к объектам ветки и дерева. Функция вставляет новую ветку или совокупность новых веток в массив дочерних веток текущего объекта начиная с указанного индекса. Для веток задается объект, и, если требуется, наименование и индекс иконки. | |
Remove | Реализована | Функция | Tree.Remove(<Индекс удаляемых веток (INT)>,<Количество удаляемых веток (INT)>=1) | Применимо к объектам ветки и дерева. Функция удаляет указанное количество дочерних веток, начиная с указанного индекса. | |
Sort | Реализована | Функция | Tree.Sort(<Направление сортировки (INT)>=0,<Сортировать все дочерние ветки (INT)>=0,<Алгоритм сортировки (INT)>=1) | Применимо к объектам ветки и дерева. Функция производит сортировку дочерних веток текущего объекта по их значениям в указанном направлении с возможностью сортировать также все ветки нижних уровней. | |
SortByNames | Реализована | Функция | Tree.SortByNames(<Направление сортировки (INT)>=0,<Сортировать все дочерние ветки (INT)>=0,<Алгоритм сортировки (INT)>=1) | Применимо к объектам ветки и дерева. Функция производит сортировку дочерних веток текущего объекта по их наименованиям в указанном направлении с возможностью сортировать также все ветки нижних уровней. | |
DoReinit | Реализована | Функция | Да
|
Tree.DoReinit(<Форсировать инициализацию (INT)>=0) | Применимо к объектам ветки и дерева. Функция вызывает визуальное событие инициализации для указанной ветки и ее подчиненных веток, если они не были уже инициализированы ранее. Есть также возможность форсировать вызов события, даже если оно уже вызывалось для подчиненных веток. |
Get | Реализована | Функция | Tree.Get(<Индекс дочерней ветки (INT)>):<Значение ветки> | Применимо к объектам ветки и дерева. Функция получает значение ветки, подчиненной данной, которая адресуется по индексу. | |
GetByName | Реализована | Функция | Tree.GetByName(<Наименование дочерней ветки (STRING)>):<Значение ветки> | Применимо к объектам ветки и дерева. Функция получает значение ветки, подчиненной данной, которая ищется по ее наименованию. Регистр наименования может быть любым. Если ветка с указанным наименованием не найдена, функция возвращает пустое значение. | |
Set | Реализована | Функция | Tree.Set(<Индекс дочерней ветки (INT)>,<Значение ветки>) | Применимо к объектам ветки и дерева. Функция устанавливает значение ветки, подчиненной данной, которая адресуется по индексу. | |
SetByName | Реализована | Функция | Tree.SetByName(<Наименование дочерней ветки (STRING)>,<Значение ветки>) | Применимо к объектам ветки и дерева. Функция устанавливает значение ветки, подчиненной данной, которая ищется по ее наименованию. Регистр наименования может быть любым. Если ветка с указанным наименованием не найдена, функция добавляет новую ветку в конец списка подчиненных веток и устанавливает у нее указанное наименование и значение. | |
FirstChild | Реализована | Функция | Tree.FirstChild():<Первая дочерняя ветка (BRANCH)> | Применимо к объектам ветки и дерева. Функция получает первую подчиненную (дочернюю) ветку текущего объекта. | |
LastChild | Реализована | Функция | Tree.LastChild():<Последняя дочерняя ветка (BRANCH)> | Применимо к объектам ветки и дерева. Функция получает последнюю подчиненную (дочернюю) ветку текущего объекта. | |
First | Реализована | Функция | Tree.First():<Первая ветка текущего уровня (BRANCH)> | Применимо к объекту ветки. Функция получает первую подчиненную (дочернюю) ветку, имеющую ту же родительскую ветку, что и текущая. | |
Last | Реализована | Функция | Tree.Last():<Последняя ветка текущего уровня (BRANCH)> | Применимо к объекту ветки. Функция получает последнюю подчиненную (дочернюю) ветку, имеющую ту же родительскую ветку, что и текущая. | |
Next | Реализована | Функция | Tree.Next():<Следующая за текущей ветка текущего уровня (BRANCH)> | Применимо к объекту ветки. Функция получает следующую за текущей подчиненную (дочернюю) ветку, имеющую ту же родительскую ветку, что и текущая. | |
Prev | Реализована | Функция | Tree.Prev():<Предыдущая по отношению к текущей ветка текущего уровня (BRANCH)> | Применимо к объекту ветки. Функция получает предыдущую перед текущей подчиненную (дочернюю) ветку, имеющую ту же родительскую ветку, что и текущая. | |
ByIndex | Реализована | Функция | Tree.ByIndex(<Индекс дочерней ветки (INT)>):<Дочерняя ветка (BRANCH)> | Применимо к объектам ветки и дерева. Функция получает объект ветки, подчиненной данной, которая адресуется по индексу. | |
Find | Реализована | Функция | Tree.Find(<Объект для поиска>,<Включать дочерние ветки в поиск (INT)>=0):<Найденная ветка (BRANCH)> | Применимо к объектам ветки и дерева. Функция производит поиск указанного объекта среди значений дочерних веток текущего объекта (с возможностью поиска во вложенных ветках). Если ветка найдена, функция возвращает ее в виде объекта, иначе возвращается пустое значение. | |
FindByName | Реализована | Функция | Tree.FindByName(<Наименование ветки для поиска (STRING)>,<Включать дочерние ветки в поиск (INT)>=0):<Найденная ветка (BRANCH)> | Применимо к объектам ветки и дерева. Функция производит поиск указанной строки среди наименований дочерних веток текущего объекта (с возможностью поиска во вложенных ветках). Если ветка найдена, функция возвращает ее в виде объекта, иначе возвращается пустое значение. | |
SelectValue | Планируется | Функция | Да
|
Tree.SelectValue(<Значение>,<Режимы выбора (INT)>,<Заголовок окна выбора (STRING)>,<Выбранная ветка по умолчанию (BRANCH)>):<Выбранная ветка или пустое значение (BRANCH)> | Применимо к объекту дерева. Функция выводит стандартный диалог выбора для выбора значения дерева. Можно задать режим выбора и заголовок окна выбора. Если пользователь выбрал значение, диалог возвращает объект выбранной ветки и само значение, если требуется. |
Lock | Реализована | Функция | Да
|
Tree.Lock() | Функция запрещает выполнения обновления визуального дерева при любом его изменении до тех пор, пока не будет вызвана функция Unlock. Функция может использоваться перед большим количеством обновлений или заполнении большого дерева для получения значительного ускорения операции. Функцию необходимо использовать совместно с конструкцией Try .. Finally для исключения вероятности появления нерабочего дерева на форме.
|
Unlock | Реализована | Функция | Да
|
Tree.Unlock() | Функция разрешает запрещенное ранее функцией Lock выполнения обновления визуального дерева при любом его изменении. См. функцию Lock. |
IsLocked | Реализована | Функция | Да
|
Tree.IsLocked():<Обновление запрещено (INT)> | Функция проверяет, запрещено ли в данный момент обновление дерева при его изменении, запрет инициируется с помощью функции Lock. |