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

Вниз

Представление данных   Найти похожие ветки 

 
olevacho_ ©   (2007-10-05 16:49) [0]

Нужно из базы считать список фирм с реквизитами и названия фирм отображать в TreeView. Потом дать пользователю выбирать и редактировать или добавлять новые записи. Проблема в том что в каждый нод можно записать одно значение напр. название. Но названия впринципе могут совпадать. Тогда нужно уметь вычислить по выбраной фирме запись из таблицы. Для этого нужно еще какую то структуру данных каждый елемент которой имеет пару значений. В одно значение бы записалось Absoluteindex каждого нода а в другое индекс записи из таблицы напр. id_firm. Есть какие то типы данных в дельфе которыми можно представить такие структуры данных. Масивы неподходят поскольку в объявлении масива нужно указать количество елементов. А наперед неизвестно сколько эллементов будет в таком списке.


 
Dennis I. Komarov ©   (2007-10-05 16:52) [1]

DBTreeView ?


 
Sergey13 ©   (2007-10-05 16:55) [2]

> [0] olevacho_ ©   (05.10.07 16:49)
> Нужно из базы считать список фирм с реквизитами и названия фирм отображать в TreeView.
А смысл? Какие то подчиненные фирмы?

Мне кажется, ты пытаешься структуру данных подогнать под некий придуманный тобой юзерский интерфейс. ИМХО, это не совсем правильный подход.


 
Ega23 ©   (2007-10-05 16:56) [3]


> DBTreeView ?


Если ты мне покажешь его на стандартной палитре компонентов, я тебе пива ящик поставлю.


 
Jeer ©   (2007-10-05 17:27) [4]

type
 PTreeNodeInfo = ^TTreeNodeInfo;
 TTreeNodeInfo = record
   Id: integer;
   ParentId: integer;
   OrdId: integer;
   CodeId: integer;
 end;

// при прохождении по таблице добавлять как Object или ChildObject

   New(NodeInfo);
   NodeInfo^.Id := fDts.FieldByName(fId).AsInteger;
   NodeInfo^.ParentId := fDts.FieldByName(fParentId).AsInteger;
...
   sName := fDts.FieldByName(fName).AsString;
   Result := Items.AddChildObject(SelNode, sName, NodeInfo)


 
Virgo_Style ©   (2007-10-05 17:33) [5]

olevacho_ ©   (05.10.07 16:49)

встречал я одну БД, организованную как дерево, но с недревесным по сути содержанием. Как оно могло работать - не представляю себе совершенно. Хотя я подозреваю, что оно и не работало, потому что в, кхм, таблице (а реально - в ветке дерева) работников был, к примеру, специальный агент Джеймс Бонд. О том, что для одного работника был нод "оклад", у другого "зарплата", а у третьего это мог быть "окл" или "зрп", я вообще молчу. Как вспомню - так вздрогну, как вздрогну - мороз по коже (с).

olevacho_ ©   (05.10.07 16:49)
Масивы неподходят поскольку в объявлении масива нужно указать количество елементов. А наперед неизвестно сколько эллементов будет в таком списке.

Динамические массивы, вообще-то, существуют.


 
olevacho_ ©   (2007-10-05 20:08) [6]


> А смысл? Какие то подчиненные фирмы?

А почему нет?  Например ЧП "Агро-сервис" имеет 4 магазина. Соответственно ЧП в паренте а 4 точки в чайлдах.


 
olevacho_ ©   (2007-10-05 20:22) [7]


> Динамические массивы, вообще-то, существуют.

Ну да вообще то я уже успел найти. Но вот вопрос. что лучше: использовать динамический масив или добавить еще одно поле в ту же таблицу которому присваивалось бы значение  AbsoluteIndex на этапе построения дерева? По этому полю можно было бы сделать табличный индекс. Тогда я думаю быстрее работал бы поиск записи выбранной юзером фирмы из дерева. С точки зрения производительности какой подход был бы более оптимальным?



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
1-1186991430
Adventure
2007-08-13 11:50
2007.10.28
Утечка памяти.....


2-1191602274
Антон Шестаков
2007-10-05 20:37
2007.10.28
соответствующий список DBComboBox


2-1191732400
A.Brej
2007-10-07 08:46
2007.10.28
DBLookupComboBox1


3-1182192180
Lavrenty
2007-06-18 22:43
2007.10.28
Не работает сообщение (из триггера)


10-1139173733
Nadi
2006-02-06 00:08
2007.10.28
Выравнивание Картинки в тексте Word