Главная страница
    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.46 MB
Время: 0.039 c
15-1190894467
hochu
2007-09-27 16:01
2007.10.28
Нужна помощь срочно!!!


2-1191314197
emelin
2007-10-02 12:36
2007.10.28
Delphi+1C. Поиск документов


11-1174814107
Dmitriy___
2007-03-25 13:15
2007.10.28
Applet и USE_NAMES


3-1182311007
O.O
2007-06-20 07:43
2007.10.28
Исправить ХП из программы


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский