Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 181

/ вопрос открыт /

Как возможно таблицу БД представить в виде дерева с возможностями модификации данных? Как просто сделать дерево понятно.

Наташа Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Наташа (статус: Посетитель)
Вопрос отправлен: 30 ноября 2006, 14:59
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: Помфюк Владимир Степанович

Здравствуйте, Наташа!
Дерево можно сделать в двух случаях:
1)есть серия таблиц которые ссылаются друг на друга (Задача->Работник->Отдел)
2)есть набор данных с полями, которые можно сгрупировать(select City, Department, FIO, ID from workers order by 1,2,3)
Рисовать дерево надо перебирая в данные цикле (или вложеных циклах). При создании каждого TreeNode в его свойство Data (тип - Pointer) надо занести указатель на record в который стоит записать начальное значение и условие которое идентифицирует запись (группу записей) и, при необходимости, таблицу. Тогда в событии OnEdited Вы легко сможете написать SQL-запрос обновления таблицы.
Еще: на OnDeletion всем этим датам надо сделать dispose.

Приложение:
  1. TRecData=record
  2. InitialVal:String;
  3. WhereCond:String;
  4. end;
  5. PRecData=^TRecData;
  6. ............................
  7.  
  8. procedure PaintTree;
  9. var
  10. NodeData:PRecData;
  11. .........................
  12. begin
  13. ......................
  14. NewNode:=TreeView.Nodes.AddChild(PrevNode,qryWorkerDepartment.asString);
  15. new(NodeData);
  16. NodeData.InitialVal:=qryWorkerDepartment.asString;
  17. NodeData.WhereCond:='DEPARTMENT='''+qryWorkerDepartment.asString+'''';
  18. NewNode.Data:=NodeData;
  19. ......................
  20. end;
  21.  
  22. procedure TfrMy.TreeViewDeletion(Sender: TObject;
  23. Node: TTreeNode);
  24. var
  25. Data:PRecData;
  26. begin
  27. Data:=Node.Data;
  28. if Data<>nil Then dispose(Data);
  29. end;
  30.  


Ответ отправил: Помфюк Владимир Степанович (статус: Абитуриент)
Время отправки: 30 ноября 2006, 15:36

Ответ #2. Отвечает эксперт: Alex Van Glukhman

Здравствуйте, Наташа!

Создать структуру дерева в зависимости от того что должно появиться в представлении например варианты
1.имя таблицы - поля - значения
2.имя таблицы - номер записи - значения полей
и т.д.
А далее структурой
Tbl.first;
while not Tbl.eof do
begin
...
//Переносим значения таблицы в TTreeView у каждого
//TreeViewItem есть свойство Text
...
Tbl.next
end;

Ответ отправил: Alex Van Glukhman (статус: 7-ой класс)
Время отправки: 30 ноября 2006, 16:39
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:45
Выполнено за 0.02 сек.