Выбор деревьев у нас (пользователей 1С++ и FormEx) есть, и дерево Sadovnikov-а, и ДеревоЗначений от АЛьФ-а, но мне по необходимости нужно было просто дерево (без дополнительных колонок), да к тому же чтобы оно отображало нормально пиктограммы (а то 1С любит резать цвета). В итоге я покопался и сделал класс для работы с TreeView. Из особенностей...
1. Дерево формируется аналогично ДеревуЗначений АЛьФ-а, т.е. если ТЗ передаваемая имеет структуру:
- 3 колонки (1 вложенная ветка, 2 номер пиктограммы, 3 значение ветки) + 1 колонка (моя собственная) со строковым представлением раскраски (опять таки аналогично АЛьФ-овскому методу, т.е. просто передается строка FONT[]... и т.д.). Итого должно быть 4 колонки.
2. Метод ЗначениеВДерево меняет значение в дереве "на лету". Обновление дерева не происходит.
3. Метод ОбновитьДерево уничтожает данную структуру и создает новую на основании переданной ТаблицыЗначений
Обновление от 24.01.08:
Новые методы:
СохранитьСостояниеДерева(), сохраняет текущее состояние дерева (свернутые, развернутые узлы)
ВосстановитьСостояниеДерева(), восстанавливает состояние дерева (свернутые, развернутые узлы)
СвернутьУзел(НомерСтроки = ""), сворачивает узел (если НомерСтроки = "" сворачивает текущую строку)
РазвернутьУзел(НомерСтроки = ""), развернуть узел (если НомерСтроки = "" разворачивает текущую строку)
УзелРазвернут(НомерСтроки = ""), 1-развернут, 0-свернут (если НомерСтроки = "" возвращает состояние текущей строки)
ЗначениеРодителяТекущейСтроки(), возвращает значение родительского узла
ПолучитьСтрокуРодителя(), возвращает полный адрес строки родителя текущего узла
ПолучитьНомерВПределахРодителя(), возвращает номер строки в ТЗ которой принадлежит текущий узел
НачатьРедактирование(), начинает редактирование текущего узла дерева. Для редактирования необходимо наличие следующих процедур в модуле формы: ИДКонтрола_AfterLabelEdit(ФСО,НовоеЗначение), ИДКонтрола_BeforeLabelEdit(ФСО)
Изменения:
метод
ОбновитьДерево(ТаблЗначений) пытается вернуть дерево в исходное состояние.
Что касается документации... ее уже в архиве нет
Если вдруг кто не захочет разбираться, пишите, набросаю вечером из дома.