|
Описание
В компонент TmsTreeView заложены базовые методы для
работы с деревом, унаследованные от класса TmsBaseTreeView, а
также добавлены новые методы, значительно расширяющие функциональность
стандартного компонента TTreeView. Компонент TmsTreeView
поддерживает операции Cut/ Copy/ Paste, функции поиска и сортировки узлов
(с возможностью настройки параметров), операции drag-and-drop. Для основных
операций с деревом введены горячие клавиши, которые могут быть переопределены
разработчиком. Компонент имеет обработчик ошибок, продвинутый редактор
узлов (на этапе проектирования) и многое другое. Список Items, компонента
TmsTreeView, состоит из наследников класса TmsBaseTreeNode
- TmsTreeNode. Для связи с данными, компонент TmsTreeView
имеет наследника - TmsDBTreeView.
|
|
|
Класс
TmsTreeNodes
Методы
- function
AddNode(Node, Relative: TmsBaseTreeNode; const S: string; Ptr: Pointer;
Method: TNodeAttachMode): TmsBaseTreeNode; override;
Добавляет узел в дерево.
Description:
Используйте метод AddNode для добавления узла в дерево. При успешном
добавлении узла производится локальная сортировка узлов (если свойство
TVOptions.AutoSort установлено в true) на уровне Self.Parent.Level-1
(т.е. на уровне родительского узла).
Note:
Также, для добавления узла, вы можете использовать методы Add, AddFirst,
Insert, AddChild, AddChildFirst, AddObject, AddObjectFirst, InsertObject,
AddChildObject, AddChildObejectFirst.
|
|
|
Класс
TmsCustomTreeView - TmsTreeView
Свойства
- property
BufferedNode: TmsBaseTreeNode;
Указывает на скопированный или вырезанный узел.
Description:
Свойство BufferedNode указывает на последний вырезанный или скопированный
узел. При значении свойства равного nil, скопированных узлов нет, и
невозможно произвести операцию вставки узла.
- property
SearchNodeParams: TmsSearchNodeParams;
Параметры поиска узлов.
Description:
Свойство SearchNodeParams содержит параметры поиска узлов. Поля данной
структуры вы можете заполнить в обработчике OnBeforeSearchNode.
Values:
|
Field |
Description |
|
Text:
string |
текст
искомого узла |
|
MatchCase:
Boolean |
необходимо
совпадение по регистру |
|
PartialStringMatch:
Boolean |
разрешено
частичное совпадение |
|
Direction:
TmsSearchDirection |
направление
поиска (вниз, вверх) |
- property
TVOptions: TmsTVOptions;
Опции дерева.
Description:
Описание полей класса TmsTVOptions смотрите здесь.
- property
TVShortCuts: TmsTVShortCuts;
Горячие клавиши для основных операций с деревом.
Description:
Описание полей класса TmsTVShortCuts смотрите здесь.
Методы
- constructor
Create(AOwner: TComponent); override;
Создает и инициализирует объект дерева.
- destructor
Destroy; override;
Уничтожает объект дерева.
- procedure
AddNode(AParent: TmsBaseTreeNode = nil); dynamic;
Добавляет в дерево новый узел.
Description:
Используйте метод AddNode для добавления нового узла в дерево. Если
AParent равен nil, то узел будет добавлен как последний дочерний узел
выделенного узла, иначе как последний дочерний узел AParent. После добавления
узла, он становится выделенным и переводится в режим редактирования
надписи.
Note:
Если в TreeView установлен режим ReadOnly, то узел не будет добавлен
и будет сгенерирована ошибка SEditTreeError.
Recomendations:
Вызывайте данный метод в обработчиках событий пунктов меню, кнопок для
быстрого добавления узла в дерево.
- procedure
DeleteNode(ANode: TmsBaseTreeNode = nil); dynamic;
Удаляет узел.
Description:
Используйте метод DeleteNode для удаления узла. Если ANode равен nil
то будет удален выделенный в данный момент узел, иначе узел ANode. В
случае, когда ни один узел не выделен и ANode равен nil, генерируется
ошибка SUnableToSelectNode.
Note:
Если в TreeView установлен режим ReadOnly, то узел не будет удален и
будет сгенерирована ошибка SEditTreeError.
Recomendations:
Вызывайте данный метод в обработчиках событий пунктов меню, кнопок для
быстрого удаления узла из дерева.
- procedure
CutNode(ANode: TmsBaseTreeNode = nil); dynamic;
Производит операцию вырезки узла.
Description:
Используйте метод CutNode для вырезки узла. Если ANode равен nil, то
операция производится над выделенным узлом, иначе над узлом ANode. В
случае, когда ни один узел не выделен и ANode равен nil, генерируется
ошибка SUnableToSelectNode. При выполнении операции инициализируется
свойство BufferedNode (данное свойство указывает на последний вырезанный
или скопированный узел). В методе CutNode генерируется событие OnCutting,
в нем вы можете отменить выполнение операции, в случае отмены генерируется
ошибка SCutNodeError.
Note:
Если в TreeView установлен режим ReadOnly, то операция не будет выполнена
и будет сгенерирована ошибка SEditTreeError.
- procedure
CopyNode(ANode: TmsBaseTreeNode = nil); dynamic;
Производит операцию копирования узла.
Description:
Используйте метод CopyNode для копирования узла. Если ANode равен nil,
то операция производится над выделенным узлом, иначе над узлом ANode.
В случае, когда ни один узел не выделен и ANode равен nil, генерируется
ошибка SUnableToSelectNode. При выполнении операции инициализируется
свойство BufferedNode (данное свойство указывает на последний вырезанный
или скопированный узел). В методе CopyNode генерируется событие OnCoping,
в нем вы можете отменить выполнение операции, в случае отмены генерируется
ошибка SCopyNodeError.
Note:
Если в TreeView установлен режим ReadOnly, то операция не будет выполнена
и будет сгенерирована ошибка SEditTreeError.
- procedure
PasteNode(ATargetNode: TmsBaseTreeNode = nil); dynamic;
Производит операцию вставки узла (и всех дочерних узлов).
Description:
Используйте метод PasteNode для вставки вырезанного или скопированного
узла. Если ATargetNode равен nil, то вырезанный или скопированный узел
вставляется в выделенный узел, иначе в узел ATargetNode. В случае, когда
делается попытка вставки узла в самого себя, операция не производится
и генерируется ошибка SInsertNodeErrorEx. При вставке вырезанного или
скопированного узла копируются также все дочерние узлы. При успешном
выполнении операции вставленный узел выделяется и разворачивается. В
методе PasteNode генерируется событие OnInserting, в нем вы можете отменить
выполнение операции, в случае отмены - генерируется ошибка SInsertNodeError.
Note:
Если в TreeView установлен режим ReadOnly, то операция не будет выполнена
и будет сгенерирована ошибка SEditTreeError.
- procedure
EditNode(ANode: TmsBaseTreeNode = nil); dynamic;
Переводит метку узла в режим редактирования.
Description:
Используйте метод EditNode для редактирования надписи узла. Если ANode
равен nil, то в режим редактирования будет переведена метка выделенного
узла, иначе метка узла ANode. В случае, когда ни один узел не выделен
и ANode равен nil, генерируется ошибка SUnableToSelectNode.
Note:
Если в TreeView установлен режим ReadOnly, то операция не будет выполнена
и будет сгенерирована ошибка SEditTreeError.
- procedure
SelectNode(Node: TmsBaseTreeNode; EditText, Expand: Boolean); dynamic;
Выделяет узел Node, переводит его в режим редактирования надписи, разворачивает
или сворачивает.
Description:
Используйте метод SelectNode для выделения узла Node. Если EditText
равен true, то метка узла переводится в режим редактирования, если параметр
Expand равен true, то узел разворачивается, иначе сворачивается.
- procedure
InitSearchParams;
Инициализирует начальные параметры поиска.
Description:
Используйте метод InitSearchParams для инициализации начальных параметров
поиска. В методе генерируется событие OnBeforeSearchNode, в нем необходимо
заполнить поля структуры SearchNodeParams. Поиск начинается с выделенного
узла. В случае, когда ни один узел не выделен, генерируется ошибка SUnableToSelectNode
и операция поиска не производится.
- function
FindNextNode: TmsBaseTreeNode;
Производит поиск следующего узла по параметрам структуры SearchNodeParams.
Description:
Используйте метод FindNextNode для поиска очередного узла. Поиск производится
с последнего найденного узла. В случае успешного поиска возвращается
найденный узел, если перебраны все узлы или нет узлов удовлетворяющих
критерию поиска, то метод возвращает nil. В процессе поиска, при переходе
к очередному узлу, генерируется события OnSearchingNode. В этом обработчике
события, вы можете написать дополнительный код проверки, результат которого
вы должны присвоить параметру Accept.
- function
SortSubTree(Node: TmsBaseTreeNode; ARecurse: Boolean = false): Boolean;
Производит сортировку дочерних узлов узла Node.
Description:
Используйте метод SortSubTree для сортировки дочерних узлов узла Node.
Если параметр ARecurse равен false, то сортируются только те узлы, которые
являются прямыми потомками узла Node, иначе метод рекурсивно вызывается
для всех дочерних узлов.
- function
SortTreeNodes(ARecurse: Boolean = false): Boolean;
Производит сортировку узлов дерева.
Description:
Используйте метод SortTreeNodes для сортировки узлов дерева. Если параметр
ARecurse равен false, то производится сортировка только корневых узлов
дерева (у которых Parent = nil), иначе производится сортировка всех
поддеревьев.
События
- TmsTVCuttingEvent
= procedure(Sender: TObject; Node: TmsBaseTreeNode; var AllowCut: Boolean)
of object;
property OnCutting: TmsTVCuttingEvent;
property OnCopying: TmsTVCuttingEvent;
Событие генерируется при выполнении операции “вырезки” или “копирования”
узла. Параметр Node указывает на вырезаемый или копируемый узел. Параметр
AllowCut (по умолчанию равен true) показывает можно ли выполнять операцию,
для запрета выполнения операции установите его в false.
- TmsTVInsertingEvent
= procedure(Sender: TObject; BuffedNode, TargetNode: TmsBaseTreeNode;
var AllowPaste: Boolean) of object;
property OnInserting: TmsTVInsertingEvent;
Событие генерируется при выполнении операции “вставки” узла. Параметр
BufferedNode указывает на вырезанный или скопированный узел, параметр
TargetNode на принимающий узел. Параметр AllowPaste (по умолчанию равен
true) показывает можно ли выполнять операцию, для запрета выполнения
операции установите его в false.
- TmsTVProcessErrorEvent
= procedure(Sender: TObject; Msg: string) of object;
property OnProcessError: TmsTVProcessErrorEvent;
Событие генерируется при возникновении ошибки при работе с деревом.
Параметр Msg содержит строковое описание ошибки. Используйте данный
обработчик для выбора способа информирования об ошибке.
- TmsTVBeforeSearchNodeEvent
= procedure(Sender: TObject; var SearchNodeParams: TmsSearchNodeParams)
of object;
property OnBeforeSearchNode: TmsTVBeforeSearchNodeEvent;
Событие генерируется при инициализации параметров поиска. В обработчике
необходимо заполнить поля структуры SearchNodeParams. Описание полей
структуры TmsSearchNodeParams смотрите здесь.
- TmsTVSearchingNodeEvent
= procedure(Sender: TObject; Node: TmsBaseTreeNode; var Accept: Boolean)
of object;
property OnSearchingNode: TmsTVSearchingNodeEvent;
Событие генерируется при переходе к очередному узлу в процессе поиска.
Параметр Node указывает на рассматриваемый узел. Параметр Accept (по
умолчанию равен результату сравнения в методе FindNextNode) показывает,
удовлетворяет узел или нет критериям поиска. Используйте данный обработчик
для дополнительной проверки узла.
|
|