Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.10.28;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.041 c
2-1191334006
Pacific
2007-10-02 18:06
2007.10.28
WebBrowers


2-1191745609
Gringoire
2007-10-07 12:26
2007.10.28
Узнать, какая клавиша была нажата за пределами окна приложения?


2-1191309272
kukuikar
2007-10-02 11:14
2007.10.28
Монитор каталогов+поток+имяфайла


1-1186741765
Kolan
2007-08-10 14:29
2007.10.28
Одинаковые имена модулей в разных пакетах, как исправить


2-1191416861
KLAUS
2007-10-03 17:07
2007.10.28
IP адрес





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский