![]() |
![]() ![]() ![]() ![]() |
|
Процедура заполнения компонента TTreeView данными из TDataSet-совместимой выборкиDelphi , Базы данных , База данных
Автор: Delirium
{ **** UBPFD *********** by delphibase.endimus.com ****
>>
Процедура заполнения компонента TTreeView данными из TDataSet-совместимой
выборки типа: idNode int, idParentNode int, cNodeName varchar, ...
Важно: корневой узел дерева должен быть первой записью выборки.
Зависимости: Windows, SysUtils, DB, ComCtrls
Автор: Delirium, Master_BRAIN@beep.ru, ICQ:118395746, Москва
Copyright: Master BRAIN (Delirium)
Дата: 18 октября 2002 г.
***************************************************** }
procedure FillTree(Tree: TTreeView; Query: TDataSet; idNode, idParent,
cNodeName: string);
var
i: integer;
begin
// Корневой узел, должен быть первым в выборке Query
Query.First;
Tree.Items.Clear;
Tree.Items.AddObject(nil, Query.FieldByName(cNodeName).AsString,
Pointer(Query.FieldByName(idNode).asInteger));
Query.Next;
while not Query.Eof do
begin
i := 0;
while i < Tree.Items.Count do
if Tree.Items.Item[i].Data = Pointer(Query.FieldByName(idParent).asInteger)
then
begin
Tree.Items.AddChildObject(Tree.Items.Item[i],
Query.FieldByName(cNodeName).AsString,
Pointer(Query.FieldByName(idNode).asInteger));
break;
end
else
Inc(i);
Query.Next;
end;
end;
Пример использования: FillTree(TreeView1, ADOQuery1, 'idDoc', 'idParentDoc', 'cDocument'); Преобразуем контент в русский язык: Это процедура Delphi, называемая
Процедура предполагает, что первый запись в запросе является корневым узлом дерева, а затем она проходит по оставшимся записям для заполнения дерева дочерними узлами. Вот разбор кода:
Пример использования в конце кода показывает, как вызывать эту процедуру с компонентом ADOQuery и указать имена столбцов для ID, ID родителя и имени узла. Некоторые предложения по улучшению:
В целом, это полезная процедура для заполнения компонентом Процедура FillTree заполняет компонент TTreeView данными из TDataSet-совместимой выборки, начиная с корневого узла и рекурсивно добавляя дочерние узлы в зависимости от поля idParent. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш :: Главная :: База данных ::
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||