Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.20;
Скачать: CL | DM;

Вниз

TreeView c БД (master-detail-detail-detail-...)   Найти похожие ветки 

 
Darker ©   (2002-05-14 16:15) [0]

Могу конечно сделать и Parent-Child но придется мастырить
Query? и еще много чего...
Во многих компонентах нет возможности вкладывать
в одну строчку значения нескольких полей.
Нууу... типа:

[иконка]|[data][Name][Day].....
|
|--->[Name2]|[Text1]...
| |
| |--->[field1][field2]...
|
|--->[Name2][Text1]...
|
[иконка]|[data][Name][Day].....
...

HELP!!! Пожалуйста кто может помочь, откликнитесь.


 
Lusha ©   (2002-05-14 16:24) [1]

А собственно чем помочь то, идеей? Ловите... Есть замечательная программулька BDE Administrator. Она позволяет редактировать различное количество "полей" для каждой ветки "дерева" (списка Alias"ов)...


 
Darker ©   (2002-05-16 07:17) [2]

Ну например в LOTUS`e есть такое дерево.
А BDE тут по моему не причем, к тому же
там в дереве только ОДНО поле показывается,
а ведь я говорил что мне надо несколько.


 
Lusha ©   (2002-05-16 09:08) [3]

>Darker © (16.05.02 07:17)
Да-а-а, батенька...
Что Вы зациклились на своем LOTUS"е? Я Вам предложил альтернативный (и на мой взгляд, очень красивый) вариант...

там в дереве только ОДНО поле показывается,
а ведь я говорил что мне надо несколько.


Правильно... В дереве одно... А справа - все остальные. Идея ясна?


 
dimis   (2002-05-16 09:29) [4]

Люди переходите на ООП. Все делается очень просто
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 10:07) [5]

>dimis (16.05.02 09:29)
Прежде чем что либо изображать в коде, необходимо, на мой взгляд, решить, а что, собственно, нужно изобразить... Вот этим, решением вопроса о внешнем виде, мы пока и занимаемся... :)


 
dimis   (2002-05-16 10:39) [6]

в любом случае если нужно отображать дерево из бызы данных нужно или самому писать его заполнение или использовать сторонии компоненнты, но нормальных бесплатных я не нашел(может кто знает подскажите)


 
Lusha ©   (2002-05-16 10:47) [7]

>dimis (16.05.02 10:39)
в любом случае если нужно отображать дерево из бызы данных нужно или самому писать его заполнение или использовать сторонии компоненнты
Полностью с Вами согласен...

но нормальных бесплатных я не нашел(может кто знает подскажите)
TvgDBTreeView из VGLib

Хотя я предпочитаю писать сам... Идея проста - на TTreeItem.Data вешается TBookmarkStr для связи с таблицей и все дела...


 
Lusha ©   (2002-05-16 10:52) [8]

Sorry, разумеется TTreeNode.Data...


 
Darker ©   (2002-05-16 11:39) [9]

>>>Lusha © (16.05.02 10:07)
>Правильно... В дереве одно... А справа - все остальные. Идея >ясна?

Дык я же говорю что у меня Master-Detail-Detail т.е. много вложенности, а это можно организовать если будет Parent-Child.
У меня несколько таблиц, а не одна.

>Что Вы зациклились на своем LOTUS"е?
Это не я... это клиент. Так ему ну очччень хочется :0)

>>>dimis (16.05.02 09:29)
А примера у Вас нет? Буду очень рад если на мыло его скините.


 
Lusha ©   (2002-05-16 11:55) [10]

>Darker © (16.05.02 11:39)
Дык я же говорю что у меня Master-Detail-Detail т.е. много вложенности, а это можно организовать если будет Parent-Child.
У меня несколько таблиц, а не одна.


Вложенность значения не имеет. Количество таблиц тоже... Слева то дерево...


 
Rothman   (2002-05-16 12:26) [11]

Готовое решение в библиотеке FirstClass ( http://www.woll2woll.com) - многоколоночное дерево с мастер-деталь-деталь... по веткам, но пакет коммерческий. Ключ я думаю сам найдеш :)
Хорошее решение ElTreeLite ( http://www.eldos.org) - тоже многоколоночное дерево с большими возможностями с огромным количеством настроек и событий, но привязывать его к датасету придется самому. FreeWare c исходниками.
Вроде бы есть решение в QuantumGrid, но не уверен. Тоже коммерческий пакет.


 
Darker ©   (2002-05-16 14:28) [12]

>Rothman (16.05.02 12:26)
Сенькс.
Да в QuantumGrid есть похожее, но мне пришлось все данные
загонять в один "Запрос" и далее в "гриде" делать группировку
т.о. это выглядит как "TreeGrid" :)


 
vchris   (2002-05-16 14:43) [13]

Я делал это следующим образом. К таблице с данными добавляется таблица описывающая положение узла в TreeView с полями Id (уникальное общее с табл. данных),Level(думаю это понятно),ParentIndex, Index (соответствует свойству .Item.Index), HasChildren. Основная трудность прописать процедуры удаления узлов и drag-drop. Узел содержит объект свойства которого совокупность полей записи нескольких подчиненных таблиц.


 
Flipper_   (2002-05-28 06:52) [14]

Для 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. Ручками чуть больше надо поработать, но и результат отличный. И оно БЫСТРЕЕ стандартного.


 
Кулюкин Олег ©   (2002-05-28 09:16) [15]

2 Darker © (14.05.02 16:15)
Если правильно понял, Вам нужен иерархический грид как в Outlook Express для конференций?
Готового бесплатного компонента я не нашел, поэтому сначала написал такой на основе DrawGrid, а потом на основе TTreeView.
Все отрисовывается ручками.
Пример ручной отрисовки дерева в папке Demo\CustomDraw.
Работы там на один-два дня.
Удачи!




Страницы: 1 вся ветка

Текущий архив: 2002.06.20;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
3-64960
jonik pegas
2002-05-28 09:14
2002.06.20
Изменения в БД. Как проще отловить


3-64924
ZDN
2002-05-25 22:26
2002.06.20
Бизнес-логика


1-65142
AL2002
2002-06-07 13:34
2002.06.20
RichEdit. Можно ли перетащить содержимое из этого элемента?


4-65283
ProNix
2002-04-20 21:32
2002.06.20
FileLock


1-65103
Demon Ltd
2002-06-06 23:03
2002.06.20
работа с Excel