| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 |
это не восхитительно. это поразительно насколько нард не хочет доки читать... |
| Автор: 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 не желательна. Много раз сам нарывался |