| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Как спрятать TTreeNode ? |
| Автор: sp75 17.5.2007, 08:32 |
| Можно ли временно спрятать TTreeNode в TtreeView не удалая его ? Спасибо. |
| Автор: SenkraD 17.5.2007, 09:27 |
| Напрямую, кажись, нет, но можно его не отрисововать. |
| Автор: sp75 17.5.2007, 10:26 |
| В OnCustomDrawItem мжно делать DefaultDraw = false;, тогда не красиво выбитые узлы смотрятся. Может както можно через OnCustomDraw, высоту TCanvas установить в 0 ? |
| Автор: SenkraD 17.5.2007, 12:09 |
| Anikmar, согласен. sp75, вообщем можно сделать так 1. Сохраняеш дерево в файл. 2. Удаляеш ненужные на время узлы 3. когда нужно грузиш с файла Как показала практика с файла грузится быстрее - мой друг сначала формулировал фалй с табами или пробелами, а потом его грузил. Да, но это хорошо если нужно загрузить большой кусок дерева (около 1000 и больше) в случае одного можно добавлять и через Insert |
| Автор: sp75 17.5.2007, 13:40 |
| Ну а если я хочу засветить один из 10 скрытых узлов, так мне нада 10 файлов иметь + их обновлять если какие узлы мнялись. Вычитал в сети что както можно откреплять TTreeNode от дерева, говорят он живет и без него , как это сделать не пойму, Parent TTreeNode менять нельзя. |
| Автор: Anikmar 17.5.2007, 13:46 |
| Если он поддерживает метод Assign, то можно его скопировать в отдельный объект, а из дерева удалить. А что, у вас к Node объект привязан? Я просто не вижу большой сложности хранить список скрытых узлов в отдельном списке и включать их в дерево по мере необходимости. |
| Автор: sp75 17.5.2007, 14:12 |
| Да, у меня связь TtreeView <=> Table, Мне не надо светить в TtreeView все записи некоторые должны быть спрятаны, и когда надо их востановить в TtreeView с точным порядком что и в Table. Можно это написать в ручную но много кода выйдет думал есть выход по проще Visible в TTreeNode, или чето в этом духе. |
| Автор: Anikmar 17.5.2007, 17:35 |
| Если записей немного - то фактически можно ограничиться одной функцией - перенос таблицы в дерево. Если записей много, то вижу смысл все их закачать на клиента в локальный массив, работать с ним, а функция уже будет выводить в дерево не таблицу, а массив (так сделал я - у меня есть выбор номенклатуры, которая состоит из десятков тысяч записей). Так как операции редактирования, удаления и добавления не такие частые, а в основном есть операция выбора номенклатуры, а в зависимости от фильтров нужно или отображать ннекоторые позиции или нет, то я и поступил так. Скачал весь номенклатор в массив, а при выборе позиции уже формирую дерево. Конечно при перестановке филтра оно мигает, но пользователь не так часто переключает фильтр, чтобы это сильно раздражало. |