![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TreeView c БД (master-detail-detail-detail-...) [D5, DBISAM]
Darker © (2002-05-14 16:15:00)Могу конечно сделать и Parent-Child но придется мастырить
Query? и еще много чего...
Во многих компонентах нет возможности вкладывать
в одну строчку значения нескольких полей.
Нууу... типа:
[иконка]|[data][Name][Day].....
|
|--->[Name2]|[Text1]...
| |
| |--->[field1][field2]...
|
|--->[Name2][Text1]...
|
[иконка]|[data][Name][Day].....
...
HELP!!! Пожалуйста кто может помочь, откликнитесь.
Кулюкин Олег (2002-05-28 09:16:00) [1]2 Darker © (14.05.02 16:15)
Если правильно понял, Вам нужен иерархический грид как в Outlook Express для конференций?
Готового бесплатного компонента я не нашел, поэтому сначала написал такой на основе DrawGrid, а потом на основе TTreeView.
Все отрисовывается ручками.
Пример ручной отрисовки дерева в папке Demo\CustomDraw.
Работы там на один-два дня.
Удачи!
Flipper_ (2002-05-28 06:52:00) [2]Для Root - "select id,name from s_Types", и заполняешь Root
При раскрытии ноды - Format("select id,name,data1,data2 from s_SubTupes where type=%d",[Integer(tv1.Selected.Data)]);
И так далее. Давно уже так делаю, т.к. все деревья с доступом к БД что я видел - были жутко тормозные и неудобные - нужна какая-нибудь мелочь, типа отображения двух полей сразу, и ничего не сделаешь..
А еще - усиленно рекомендую всем работающим с деревьями TVirtualTree by Micke Lischke. Ручками чуть больше надо поработать, но и результат отличный. И оно БЫСТРЕЕ стандартного.
vchris (2002-05-16 14:43:00) [3]Я делал это следующим образом. К таблице с данными добавляется таблица описывающая положение узла в TreeView с полями Id (уникальное общее с табл. данных),Level(думаю это понятно),ParentIndex, Index (соответствует свойству .Item.Index), HasChildren. Основная трудность прописать процедуры удаления узлов и drag-drop. Узел содержит объект свойства которого совокупность полей записи нескольких подчиненных таблиц.
Darker (2002-05-16 14:28:00) [4]>Rothman (16.05.02 12:26)
Сенькс.
Да в QuantumGrid есть похожее, но мне пришлось все данные
загонять в один "Запрос" и далее в "гриде" делать группировку
т.о. это выглядит как "TreeGrid" :)
Rothman (2002-05-16 12:26:00) [5]Готовое решение в библиотеке FirstClass ( http://www.woll2woll.com) - многоколоночное дерево с мастер-деталь-деталь... по веткам, но пакет коммерческий. Ключ я думаю сам найдеш :)
Хорошее решение ElTreeLite ( http://www.eldos.org) - тоже многоколоночное дерево с большими возможностями с огромным количеством настроек и событий, но привязывать его к датасету придется самому. FreeWare c исходниками.
Вроде бы есть решение в QuantumGrid, но не уверен. Тоже коммерческий пакет.
Lusha (2002-05-16 11:55:00) [6]>Darker © (16.05.02 11:39)
Дык я же говорю что у меня Master-Detail-Detail т.е. много вложенности, а это можно организовать если будет Parent-Child.
У меня несколько таблиц, а не одна.
Вложенность значения не имеет. Количество таблиц тоже... Слева то дерево...
Darker (2002-05-16 11:39:00) [7]>>>Lusha © (16.05.02 10:07)
>Правильно... В дереве одно... А справа - все остальные. Идея >ясна?
Дык я же говорю что у меня Master-Detail-Detail т.е. много вложенности, а это можно организовать если будет Parent-Child.
У меня несколько таблиц, а не одна.
>Что Вы зациклились на своем LOTUS"е?
Это не я... это клиент. Так ему ну очччень хочется :0)
>>>dimis (16.05.02 09:29)
А примера у Вас нет? Буду очень рад если на мыло его скините.
Lusha (2002-05-16 10:52:00) [8]Sorry, разумеется TTreeNode.Data...
Lusha (2002-05-16 10:47:00) [9]>dimis (16.05.02 10:39)
в любом случае если нужно отображать дерево из бызы данных нужно или самому писать его заполнение или использовать сторонии компоненнты
Полностью с Вами согласен...
но нормальных бесплатных я не нашел(может кто знает подскажите)
TvgDBTreeView из VGLib
Хотя я предпочитаю писать сам... Идея проста - на TTreeItem.Data вешается TBookmarkStr для связи с таблицей и все дела...
dimis (2002-05-16 10:39:00) [10]в любом случае если нужно отображать дерево из бызы данных нужно или самому писать его заполнение или использовать сторонии компоненнты, но нормальных бесплатных я не нашел(может кто знает подскажите)
Lusha (2002-05-16 10:07:00) [11]>dimis (16.05.02 09:29)
Прежде чем что либо изображать в коде, необходимо, на мой взгляд, решить, а что, собственно, нужно изобразить... Вот этим, решением вопроса о внешнем виде, мы пока и занимаемся... :)
dimis (2002-05-16 09:29:00) [12]Люди переходите на ООП. Все делается очень просто
Tobj_type=(type1,type2,type3....);
TmyNode=class
ide:integer;
obj:Tobj_type;
.....
constructor create(Aide:integer;AObj:TObj_type..);
end;
этот класс определяется как кому надо. Смотря какие поля нужно хранить
constructor TmyNode.Create(Aide:integer;AObj:TObj_type....)
begin
ide:=aide;
obj:=Aobj;
end;
а теперь самое основное.Добавляем Node в дерево
var
n:TTreeNode;
begin
n:=TreeView1.Items.AddObject(nil," текст",TmyNode.Create(....));
end;
Вот в принципе все. на элементе дерева висит объект с полями нужными(их может быть много);
Считывание происходит следующим образом
TmyNode(TreeView1.Selexted.Data).ide
TmyNode(TreeView1.Selexted.Data).obj
Поле TmyNode.obj советую оставить в нем можно хранить тип объекта и что при клике на него делать.
Возможны дальнейшие консультации
Lusha (2002-05-16 09:08:00) [13]>Darker © (16.05.02 07:17)
Да-а-а, батенька...
Что Вы зациклились на своем LOTUS"е? Я Вам предложил альтернативный (и на мой взгляд, очень красивый) вариант...
там в дереве только ОДНО поле показывается,
а ведь я говорил что мне надо несколько.
Правильно... В дереве одно... А справа - все остальные. Идея ясна?
Darker (2002-05-16 07:17:00) [14]Ну например в LOTUS`e есть такое дерево.
А BDE тут по моему не причем, к тому же
там в дереве только ОДНО поле показывается,
а ведь я говорил что мне надо несколько.
Lusha (2002-05-14 16:24:00) [15]А собственно чем помочь то, идеей? Ловите... Есть замечательная программулька BDE Administrator. Она позволяет редактировать различное количество "полей" для каждой ветки "дерева" (списка Alias"ов)...