Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > VirtualTreeView


Автор: artem1987 26.8.2006, 18:07
делаю Node.CheckType := ctCheckBox; но чекбоксы всеравно не появляются, как быть?

Автор: Quadr0 26.8.2006, 18:22
...

Автор: artem1987 26.8.2006, 18:27
!!!!!!восхетительно, спасибо.запишите 3 репы на мой счет,дорасту до 100а постов обязательно порадую.

Автор: _hunter 28.8.2006, 11:55
Цитата(artem1987 @  26.8.2006,  18:27 Найти цитируемый пост)
!!!!!!восхетительно

это не восхитительно. это поразительно насколько нард не хочет доки читать...

Автор: forever 3.9.2006, 05:43
Вопросы тоже по чекбоксам VirtualTree, поэтому спрошу здесь:

Начальное состояние TriStateCheckBox
Создаю узел с чекбоксом типа TriStateCheckBox, добавляю дочерние ноды с обычными чекбоксами - какие-то чекнуты, какие-то нет. Вопрос в том, как лучше (проще) присвоить тройному чекбоксу правильное начальное состояние? При его создании я только указываю тип чекбокса и не указываю его состояния (поскольку я не знаю каким ему следует быть - это определяется состоянием дочерних нодов). В итоге при запуске программы TriStateCheckBox у меня Unchecked независимо от того есть ли чекнутые дочерние ноды.
Опция toAutoTriStateTracking включена и при первом же клике по чекбоксу дочерних нодов состояние тройного чекбокса выставляется правильно. Но при старте состояние некорректное. Пробовал после заполнения ветки перерисовывать родителя (метод RepaintNode) - никакого эффекта. Наверное помог бы метод CheckParentCheckState, но он, к сожалению, protected.
Перебирать ветку и считать чекнутые ноды или делать это в процессе добавления не хочется - надеюсь, что есть более простой способ. 

Автор: artem1987 4.9.2006, 14:30
попробуй invalidatecolumn(0)

Автор: AriX 4.9.2006, 15:41
forever, странно. Посмотрю, как у меня в проекте сделано, если не забуду.

Автор: forever 4.9.2006, 16:56
artem1987, AriX,
Спасибо, я уже разобрался. Проблема была в том, что состояния я указывал через Node.CheckState - в этом случае состояние меняется, но события OnChecking и  OnChecked не происходят, состояние корневого узла не меняется. Если же использовать Tree.CheckState[Node] то все всает на места.

Вывод: Node.CheckState следует использовать только для проверки состояния, а для назначения - Tree.CheckState[Node].

Автор: AriX 5.9.2006, 08:57
forever, вообще, работа непосредственно с полями Node не желательна. Много раз сам нарывался smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)