![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Очень надо ускорить работу TreeView [D6, MSSQL]
MikeFW © (2002-06-18 16:33:00)Господа,
у меня сложилась следующая ситуация:
Я должен построить максимально удобное меню для работы с стаблицами базы данных (данные в которй можно интерпретировать как древовидную структуру) и использую для этих целей TreeView
использую для этих целей следующий код
while not qType.Eof do
begin
Node := tvPrice.Items.Add(nil, qType.FieldByName("INVTYPEID").Value);
qPrice.First;
while not qPrice.Eof do
begin
tvPrice.Items.AddChild(Node, qPrice.FieldByName("INVKINDID").Value);
qPrice.Next;
end;
qType.Next;
end;
И все хорошо строится, только вот незадача, в первой таблице 1,000 записей а в другой - 1,000,000 и вся операцияя по построению дерева занимает больше часа.
Подскажите, пожалуйста, как можно намного ускорить этот процес?
Volj (2002-06-18 20:53:00) [1]"передать фокус соответсвующей ей записи в базе данных" - в поле Data TTreeNode прописывать ID или ссылку на значение уникальной записи. Потом, соответственно, на OnChange смотришь Node.Data и Locate
aus (2002-06-18 19:27:00) [2]Я пробовал сначала все строки писать в екстовый файл, в формате, который сохраняет TreeView.SaveToFile(...), а потом загружать из файла, намного быстрее...
MikeFW (2002-06-18 17:28:00) [3]Подскажите, пожалуйста, как при клике на соответсвующую запись в дереве, передать фокус соответсвующей ей записи в базе данных?
SergSuper (2002-06-18 17:11:00) [4]очевидно не строить всё дерево стразу, а заполнять нужные ветви при их раскрытии, используя соответсвующие эвенты