Дерево

From SunFlurry wiki
Revision as of 13:39, 30 October 2020 by Admin (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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)> Применимо к объекту ветки. Атрибут получает или устанавливает наименование текущей ветки.
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)> Применимо к объекту ветки. Атрибут получает или устанавливает ветку родителя текущей ветки. Если ветка прикреплена к непосредственно дереву, функция возвращает пустое значение. При установке этого атрибута ветка перемещается соответствующим образом в структуре дерева. Для указания того, что ветка перемещается в самый верхний уровень, в атрибут можно записывать объект дерева.
BackgroundColor Реализована Атрибут
Да
Tree.BackgroundColor:<Цвет фона текущей ветки (INT)> Применимо к объекту ветки. Атрибут устанавливает или получает цвет фона текущей ветки.
FontColor Реализована Атрибут
Да
Tree.FontColor:<Цвет текста текущей ветки (INT)> Применимо к объекту ветки. Атрибут устанавливает или получает цвет текста текущей ветки.
FontStyle Реализована Атрибут
Да
Tree.FontStyle:<Стиль шрифта текущей ветки (INT)> Применимо к объекту ветки. Атрибут устанавливает или получает стиль шрифта текста текущей ветки.
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)> Применимо к объекту дерева. Функция выводит стандартный диалог выбора для выбора значения дерева. Можно задать режим выбора и заголовок окна выбора. Если пользователь выбрал значение, диалог возвращает объект выбранной ветки и само значение, если требуется.