Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
svnvlad
Member

Откуда:
Сообщений: 2166
В обычном DataSource обновление дочерних сеток вешается на событие OnDataChange.
Для дерева я повесил его на событие OnChange. Но беда в том, что при клике на ветку, имеющую разветвленную вложенную структуру, срабатывает OnInitNode столько раз, сколько элементов во всей вложенности. Например их может быть сотня. На каждый OnInitNode срабатывает OnChange, соответственно, дочерние сетки обновляются сотню раз.
Как вариант - избавиться от OnInitNode для построения вложенности и строить сразу все дерево одной рекурсивной процедурой.
Или может быть можно выбрать другое событие как триггер для отрисовки дочерних сеток?
С таймерами неохота связываться. Как последнее средство.

Сообщение было отредактировано: 24 июн 20, 15:04
24 июн 20, 15:01    [22156582]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
cptngrb
Member

Откуда:
Сообщений: 574
svnvlad, точно не помню, но вроде есть событие onFocusedNode или onSelectedNote
24 июн 20, 16:40    [22156644]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
svnvlad
Но беда в том, что при клике на ветку, имеющую разветвленную вложенную структуру, срабатывает OnInitNode столько раз, сколько элементов во всей вложенности. Например их может быть сотня.

А я тебе про таймер писал. Куле ж ты спрашиваешь, если не читаешь.
24 июн 20, 17:18    [22156662]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 26649
На OnInitChildren смотрел?
24 июн 20, 18:08    [22156699]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
ъъъъъ
svnvlad
Но беда в том, что при клике на ветку, имеющую разветвленную вложенную структуру, срабатывает OnInitNode столько раз, сколько элементов во всей вложенности. Например их может быть сотня.

А я тебе про таймер писал. Куле ж ты спрашиваешь, если не читаешь.


К сообщению приложен файл (tstVCL.7z - 1Kb) cкачать
24 июн 20, 18:19    [22156706]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
svnvlad
Member

Откуда:
Сообщений: 2166
ъъъъъ
svnvlad
Но беда в том, что при клике на ветку, имеющую разветвленную вложенную структуру, срабатывает OnInitNode столько раз, сколько элементов во всей вложенности. Например их может быть сотня.

А я тебе про таймер писал. Куле ж ты спрашиваешь, если не читаешь.

Таймер - последнее средство, если ничего другое не помогает.
24 июн 20, 19:28    [22156763]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
svnvlad
Member

Откуда:
Сообщений: 2166
wadman
На OnInitChildren смотрел?

Как использовать?
24 июн 20, 19:29    [22156765]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
ъъъъъ
Member

Откуда:
Сообщений: 795
svnvlad
ъъъъъ
пропущено...

А я тебе про таймер писал. Куле ж ты спрашиваешь, если не читаешь.

Таймер - последнее средство, если ничего другое не помогает.


Это первое и обязательное средство. Зачем дергать детальный грид, если продолжается работа с мастером?
24 июн 20, 19:38    [22156770]     Ответить | Цитировать Сообщить модератору
 Re: VirtualStringTree - на какое событие повесить обновление дочерней сетки?  [new]
svnvlad
Member

Откуда:
Сообщений: 2166
cptngrb
svnvlad, точно не помню, но вроде есть событие onFocusedNode или onSelectedNote

Спасибо! Использовал OnFocusChanged - реально помогло. Дочерние сетки перерисовываются только один раз.
25 июн 20, 03:04    [22156883]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить