Компонент TmsTreeView

| Версия 1.0.068 (Последнее изменение 22 декабря, 2006) |

 
 
 

Copyright © mSunSoftware. 2006.
All rights reserved.

E-mail: support@msunsoftware.com
Web: http://www.msunsoftware.com

 
 
 
 
Home английский | русский
 
 
 
 

Содержание


 
 

Описание

В компонент TmsTreeView заложены базовые методы для работы с деревом, унаследованные от класса TmsBaseTreeView, а также добавлены новые методы, значительно расширяющие функциональность стандартного компонента TTreeView. Компонент TmsTreeView поддерживает операции Cut/ Copy/ Paste, функции поиска и сортировки узлов (с возможностью настройки параметров), операции drag-and-drop. Для основных операций с деревом введены горячие клавиши, которые могут быть переопределены разработчиком. Компонент имеет обработчик ошибок, продвинутый редактор узлов (на этапе проектирования) и многое другое. Список Items, компонента TmsTreeView, состоит из наследников класса TmsBaseTreeNode - TmsTreeNode. Для связи с данными, компонент TmsTreeView имеет наследника - TmsDBTreeView.


 
 

Иерархия

TObject
       |
TPersistent
       |
TComponent
       |
TControl
       |
TWinControl
       |
TmsBaseTreeView
       |
TmsCustomTreeView
       |
TmsTreeView


 
 

Класс TmsTVOptions

Свойства

  • property AutoSort: Boolean;
    Показывает, будут ли узлы дерева сортироваться автоматически.
    Description:
    При значение true узлы дерева будут сортироваться автоматически, при значении false узлы сортироваться не будут.
  • property AutoDrag: Boolean;
    Показывает, будет ли процесс переноса узлов происходить автоматически.
    Description:
    При значении true имеется возможность переноса узлов, при значении false узы переносить нельзя.
  • property SortDirection: TmsSortDirection;
    Показывает направление сортировки узлов.
    Description:
    При значении sdAlphabeticOrder узлы дерева будут сортироваться в алфавитном порядке, при значении sdInvertedOrder в обратном алфавитном порядке.
    Values:
      Parameter Description
      sdAlphabeticOrder сортировка узлов дерева в алфавитном порядке
      sdInvertedOrder сортировка узлов дерева в обратном алфавитном порядке

Методы

  • constructor Create(ATreeView: TmsCustomTreeView); virtual;
    Создает и инициализирует объект типа TmsTVOptions.
  • procedure Assign(Source: TPersistent); override;
    Копирует данные из источника Source в объект типа TmsTVOptions.

 
 

Класс TmsTVShortCuts

Свойства

  • property scAddNode: TShortCut;
    Сочетание клавиш для выполнения операции добавления узла.
  • property scDeleteNode: TShortCut;
    Сочетание клавиш для выполнения операции удаления узла.
  • property scCutNode: TShortCut;
    Сочетание клавиш для выполнения операции вырезки узла.
  • property scCopyNode: TShortCut;
    Сочетание клавиш для выполнения операции копирования узла.
  • property scPasteNode: TShortCut;
    Сочетание клавиш для выполнения операции вставки узла.
  • property scFindNode: TShortCut;
    Сочетание клавиш для выполнения операции поиска узла.
  • property scEditNode: TShortCut;
    Сочетание клавиш для выполнения операции переводящей метку узла в режим редактирования.

Методы

  • constructor Create; virtual;
    Создает и инициализирует объект типа TmsTVShortCuts.
  • procedure Assign(Source: TPersistent); override;
    Копирует данные из источника Source в объект типа TmsTVShortCuts.

 
 

Класс TmsTreeNode

Методы

  • destructor Destroy; override;
    Уничтожает объект узла дерева.
  • procedure AssignChildNodes(Source: TmsBaseTreeNode); virtual;
    Копирует все дочерние узлы узла Source в узел Self.
    Description:
    Используйте метод AssignChildNodes для копирования дочерних узлов узла Source в узел Self. Для каждого копируемого узла вызывается метод Assign, копирующий все его свойства (за исключением данных на которые указывает поле Data).
  • procedure MoveTo(Destination: TmsBaseTreeNode; Mode: TNodeAttachMode); override;
    Переносит узел Self в узел Destination в режиме указанном в параметре Mode.
    Description:
    Используйте метод MoveTo для переноса узла Self в новую позицию. После переноса узла производится локальная сортировка узлов (если свойство TVOptions.AutoSort установлено в true) на уровне Self.Parent.Level-1 (т.е. на уровне родительского узла).

 
 

Класс 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) показывает, удовлетворяет узел или нет критериям поиска. Используйте данный обработчик для дополнительной проверки узла.

 

Copyright © mSunSoftware. 2006. All rights reserved.