|
Содержание
|
|
|
Описание
Компонент TmsDBTreeView, является производным от TmsTreeView
и дополняет родителя механизмом взаимодействия с базами данных. Связь
с данными осуществляется через канал связи - потомка TDataLink, аналогично
стандартным компонентам со страницы Data Controls. Компонент TmsDBTreeView
тесно взаимодействует с DataSet, реагирует на все изменения в наборе данных
(добавление/ удаление/ изменение записей, фильтрация, открытие/ закрытие
соединения, прокрутка данных и др.). В DataSet сохраняется информации
о каждом узле (ID родителя, текст узла, состояние узла). Список Items,
компонента TmsDBTreeView, состоит из наследников класса
TmsTreeNode - TmsDBTreeNode.
|
|
|
Иерархия
TObject
|
TPersistent
|
TComponent
|
TControl
|
TWinControl
|
TmsBaseTreeView
|
TmsCustomTreeView
|
TmsCustomDBTreeView
|
TmsDBTreeView
|
|
|
Класс
TmsDBTreeNode
Свойства
- property
ID: Integer;
Абсолютный идентификатор узла.
Description:
Значение свойства ID указывает на конкретную запись DataSet. Инициализируется
при загрузке узла из DataSet и при добавлении узла в дерево, или записи
в DataSet.
Методы
- constructor
Create(AOwner: TmsBaseTreeNodes); override;
Создает объект узла дерева.
- procedure
Assign(Source: TPersistent); override;
Копирует данные узла Source в узел Self.
Description:
Используйте метод Assign для копирования данных узла Source в узел Self.
Если Source не является объектом типа TmsDBTreeNode или операция осуществляется
между разными деревьями (Source.TreeView <> Self.TreeView), то
вызывается родительский метод копирования, а затем обновляется поле
“Text” записи DataSet ассоциированной с узлом Self. В ином случае (если
Source есть TmsDBTreeNode) копируются все поля записи DataSet ассоциированной
с узлом Source в поля записи DataSet ассоциированной с узлом Self. На
время выполнения операции устанавливается блокировка DataSet методами
BeginEdit - EndEdit.
- procedure
Delete; override;
Удаляет
узел Self из дерева.
Description:
Используйте метод Delete для удаления узла Self из дерева. При вызове
данного метода из программы, также удаляется запись DataSet ассоциированная
с узлом Self. На время выполнения операции устанавливается блокировка
DataSet методами BeginEdit - EndEdit.
Note:
Также для удаления узлов вы можете использовать методы Items.Delete,
TmsDBTreeView.DeleteNode (при их вызове из DataSet будет удалена запись,
ассоциированная с удаляемым узлом). Для удаления узла не используйте
метод Node.Free, т.к. будет удален только сам узел, без удаления записи
DataSet!
- procedure
MoveTo(Destination: TmsBaseTreeNode; Mode: TNodeAttachMode); override;
Переносит узел Self в узел Destination в режиме указанном в параметре
Mode.
Description:
Используйте метод MoveTo для переноса узла Self в новую позицию. После
переноса узла обновляется поле “ParentID” записи DataSet ассоциированной
с узлом Self. На время выполнения операции устанавливается блокировка
DataSet методами BeginEdit - EndEdit.
|
|
|
Класс TmsDBTreeNodes
Методы
- function
AddNode(Node, Relative: TmsBaseTreeNode; const S: string; Ptr: Pointer;
Method: TNodeAttachMode): TmsBaseTreeNode; override;
Добавляет новый узел в дерево.
Description:
Используйте метод AddNode для добавления нового узла в дерево. Если
компонент TmsDBTreeView не активен (TVActive = false), то узел не будет
добавлен, и будет сгенерирована ошибка STVIsntActive. Если компонент
активен, то будет сделана попытка добавления узла, при этом если дерево
не строится (TVBuilding = false), то будет добавлена и новая запись
в DataSet. На время выполнения операции добавления устанавливается блокировка
DataSet методами BeginEdit - EndEdit.
Note:
Также, для добавления узла, вы можете использовать методы Add, AddFirst,
Insert, AddChild, AddChildFirst, AddObject, AddObjectFirst, InsertObject,
AddChildObject, AddChildObejectFirst.
- procedure
Assign(Source: TPersistent); override;
Копирует данные из источника Source в Self.
Description:
Используйте метод Assign для копирования данных из источника Source
в Self. Если компонент TmsDBTreeView не активен (TVActive = false),
то операция не будет выполнена, и будет сгенерирована ошибка STVIsntActive.
Если же компонент активен, то операция выполняется и на время выполнения
операции устанавливается блокировка DataSet методами BeginEdit - EndEdit.
- procedure
Clear; override;
Удаляет все узлы дерева.
Description:
Используйте метод Clear для удаления всех узлов дерева. Если компонент
TmsDBTreeView не активен (TVActive = false), то будет вызван родительский
метод Clear без каких-либо дополнительных действий. Если же компонент
активен, то на время выполнения операции устанавливается блокировка
DataSet методами BeginEdit - EndEdit.
|
|
|
Класс
TmsCustomDBTreeView - TmsDBTreeView
Свойства
- property
TVActive: Boolean;
Отражает состояние компонента TmsDBTreeView.
Description:
Если значение свойства равно true, то компонент находится в активном
состоянии, вы можете добавлять/ удалять/ редактировать узлы. При значении
свойства false, компонент не активен, при вызове большинства методов
редактирования дерева, генерируется ошибка STVIsntActive.
Note:
Свойство TVActive доступно только для чтения, оно изменяется при смене
состояния DataSet.Active. Значение свойства устанавливается в true только
в том случае, если:
- DataSet не равен nil;
- DataSet активен;
- найдены и корректны необходимые для работы дерева
поля DataSet.
Список полей, необходимых для работы компонента, смотрите здесь.
- property
TVBuilding: Boolean;
Показывает, происходит ли загрузка и инициализация узлов дерева.
Description:
Если значение свойства равно true, то загружаются данные из DataSet,
дерево строится.
Note:
Свойство TVBuilding доступно только для чтения, оно устанавливается
в true перед началом построения дерева, и в false после.
- property
TVEditing: Boolean;
Показывает, происходит ли обновление данных в DataSet, в ответ на изменения
узлов дерева (добавление/ удаление/ перенос/ редактирование надписи
узла).
Description:
Если значение свойства равно true, то идет обновление данных DataSet.
Note:
Свойство TVEditing доступно только для чтения, оно устанавливается в
true перед началом обновления данных DataSet, и в false после.
- property
DataSetModified: Boolean;
Показывает, происходит ли обновление узлов дерева, в ответ на изменения
в DataSet.
Description:
Если значение свойства равно true, то идет обновление узлов дерева.
Note:
Свойство FDataSetModified доступно только для чтения, оно устанавливается
в true перед началом обновления узлов дерева, и в false после.
- property
DataSource: TDataSource;
Ссылка на источник данных.
Методы
- constructor
Create(AOwner: TComponent); override;
Создает экземпляр объекта типа TmsDBTreeView.
- destructor
Destroy; override;
Освобождает память из под объекта типа TmsDBTreeView.
- procedure
BeginEdit;
Увеличивает число блокировок.
Description:
Используйте метод BeginEdit для увеличения числа блокировок. Если установлена
первая блокировка, то, переводит флаг TVEditing в true, запоминает закладку
на текущую запись, отключает обновление в компонентах.
- procedure
EndEdit;
Уменьшает число блокировок.
Description:
Используйте метод EndEdit для уменьшения числа блокировок. Если все
блокировки сняты, переводит флаг TVEditing в false, устанавливает курсор
на запомненную запись, включает обновление в компонентах.
- procedure
DeleteNode(ANode: TmsBaseTreeNode = nil); override;
Удаляет узел.
Description:
Используйте метод DeleteNode для удаления узла из дерева. Операция производится
только в том случае, когда компонент активен (если TVActive=false, то
удалять просто нечего!). На время выполнения операции устанавливается
блокировка DataSet методами BeginEdit - EndEdit.
- procedure
PasteNode(ATargetNode: TmsBaseTreeNode = nil); override;
Производит операцию вставки узла.
Description:
Используйте метод PasteNode для вставки узла. Операция производится
только в том случае, когда компонент активен (TVActive=true). На время
выполнения операции устанавливается блокировка DataSet методами BeginEdit
- EndEdit.
- procedure
LoadFromFile(const FileName: string); override;
Загружает узлы из файла.
Description:
Используйте метод LoadFromFile для загрузки узлов дерева из файла. Если
компонент TmsDBTreeView не активен (TVActive = false), то операция не
будет выполнена, и будет сгенерирована ошибка STVIsntActive. Если же
компонент активен, то операция выполняется и на время выполнения операции
устанавливается блокировка DataSet методами BeginEdit - EndEdit.
- procedure
LoadFromStream(Stream: TStream); override;
Загружает узлы из потока.
Description:
Используйте метод LoadFromStream для загрузки узлов дерева из потока.
Если компонент TmsDBTreeView не активен (TVActive = false), то операция
не будет выполнена, и будет сгенерирована ошибка STVIsntActive. Если
же компонент активен, то операция выполняется и на время выполнения
операции устанавливается блокировка DataSet методами BeginEdit - EndEdit.
|
|
|
Список
полей, необходимых для работы компонента:
|
Field |
Type |
Delphi Type |
|
ID |
счетчик |
ftAutoInc |
|
ParentID |
целое |
ftInteger |
|
Expanded |
логический |
ftBoolean |
|
Text |
строковый |
ftString or ftWideString |
|
|