Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прорисовка в TTreeView [D7, WinXP]


Vilux ©   (2004-07-26 10:05:00) 

В дерево добавляется много элементов и тормозит это дело. Как бы мне отключить прорисовку элементов, пока дерево не заполнится, а потом включить?


Экспериментатор   (2004-07-26 14:43:00) [1]

Поищи TVirtualTreeView
оно намного быстрее


savva   (2004-07-26 13:18:00) [2]

единственно немогу тебе подсказать по поводу ItemId - потому как не видел тех специфичных компонентов, которые ты используешь


savva   (2004-07-26 13:12:00) [3]

2 минуты работы

procedure SetHasChildren(Handle : THandle;Value: Boolean);
var
 Item: TTVItem;
begin
 with Item do
 begin
   mask := TVIF_CHILDREN;
   hItem := ItemId;
   cChildren := Ord(Value);
 end;
 TreeView_SetItem(Handle, Item);
end;


вызов
SetHasChildren(YourNode.Handle, true)- покажет крестик


savva   (2004-07-26 13:08:00) [4]

а подглядеть исходники VCL коран не дозволяет?


Vilux   (2004-07-26 13:02:00) [5]

Я использую TElTree, так там нельзя менять значение HasChildern :( только можно читать


MetalFan   (2004-07-26 12:39:00) [6]

а, ну да! это св-во  у TTreeNode


MetalFan   (2004-07-26 12:38:00) [7]


property HasChildren: Boolean;

Description

HasChildren is True if the node has subnodes, or False if the node has no subnodes. If ShowButtons of the tree view is True, and HasChildren is True, a plus (+) button will appear to the left of the node when it is collapsed, and a minus (-) button will appear when the node is expanded.

Note: If a node has no children, setting HasChildren to True will show a (+) plus button, but will not add any child nodes and the node cannot be expanded.

усе понятно?


Vilux   (2004-07-26 12:25:00) [8]

Как-то это некрасиво получается... неужели нет более легкого пути?


KSergey   (2004-07-26 12:21:00) [9]

Подозреваю, что надо в нем создать произвольный дочерний итем, но как-то указать, что это не реальные данные, что их надо еще закачать


Vilux   (2004-07-26 12:19:00) [10]

Возник еще такой вопрос, как мне принудительно нарисовать значок плюсика у итема, чтобы он мог раскрываться?


Vilux   (2004-07-26 10:59:00) [11]

Спасибо, так наверное и сделаю, буду динамически заполнять.


KSergey   (2004-07-26 10:12:00) [12]

>  [2] Vlad ©   (26.07.04 10:08)

Само по себе дерево заполняется достаточно быстро (с учетом [1])
Ваш совет актуален только в случае, когда сами данные для заполнения доставать сравнительно долго.


Vlad   (2004-07-26 10:08:00) [13]


> Vilux ©   (26.07.04 10:05)  

Не заполняй сразу все дерево, а только "верхние" узлы. Остальные заполняй динамически, при раскрытии узла, т.е. нажатии на (+)


KSergey   (2004-07-26 10:07:00) [14]

Items.BeginUpdate/EndUpdate


Наверх

Титульная страница Поиск, карта сайта Написать письмо