Дерево

From SunFlurry wiki
Jump to: navigation, search
  Tree.png  Tree (Дерево)
Статус разработки: Реализован
Создание объекта: Create
Визуальный эквив.: Дерево значений

Объект дерево является удобным способом хранения структурированной информации и может быть представлен визуально деревом значений, которое, кроме произвольной информации, может содержать структуру папок справочника. Дерево состоит из веток, каждая ветка может содержать произвольное значение, с каждой веткой может быть ассоциировано также строковое значение (наименование), каждая ветка может иметь произвольное количество дочерних веток. Другие свойства, присущие веткам: индекс галочки (см. 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)> Применимо к объекту ветки. Атрибут получает или устанавливает наименование текущей ветки.
IsBranch Реализована Атрибут Tree.IsBranch:<Является ли текущий объект веткой (INT)> Применимо к объекту дерева или ветки. Атрибут возвращает 1, если текущий объект является веткой, иначе возвращается 0 (дерево).
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):<Первая из вставленных веток (BRANCH)> Применимо к объектам ветки и дерева. Функция вставляет новую ветку или совокупность новых веток в массив дочерних веток текущего объекта начиная с указанного индекса. Для веток задается объект, и, если требуется, наименование и индекс иконки.
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.