Отметка строк в дереве и прочие примеры работы с деревом


Обработка, содержащая форму, которую можно применять универсально, и формочку для тестирования. Примеры работы с деревом для применения где угодно.

Умеет:

  • Отмечать строки в переданном дереве флажками (флажок выводится в первой колонке, имя колонки флажка передаётся, если колонки нет - добавляется);
  • Возвращать результат отметки в виде:
    • Дерева значений
    • Таблицы значений
    • Списка значений 
  • Только "концевые" строки или все; только отмеченные или все - в любых комбинациях.

Для вызова: Отмеченное=ПолучитьОбщуюФорму("ФормаОтметкиДерева").ОтметитьСтрокиДерева(ТвоеДерево,"КолонкаПометки"[,Новый Структура("флТолькоОтмеченные,флТолькоКонцевые,ЧтоВозвращать,флПоказВозвращаемогоЗначения,КолонкаПредставления,ЗаголовокФормы,Таймаут",Истина,Истина,"Дерево,Список,Таблица",Истина,ТвоеДерево.Колонки[1].Имя,"Поставьте флажки, где успеете:",10)])[.Дерево/Список/Таблица]; 
Результат вызова - структура; можно обращаться сразу к результатному дереву/списку/таблице, по ключу структуры (Дерево,Таблица,Список). Если от выбора отказались или не успели - возвращает Неопределено.

Форма для тестирования открывается уже максимально настроенной.

Форму отметки можно сразу перетаскивать в общие, дополнительной настройки не требует.

Зачем: кроме того, что обработка содержит примеры разнообразных трансформаций дерева путём рекурсивных обходов (и только их!), в ней же - обработка установки "серого" флага на родителей, отметки дочерних строк, пример полной инкапсуляции обработки (вызов одной строкой). И простейший таймер :)

Ну и не всегда можно обойтись отметкой варианта/вариантов из списка, бывают и сложные ситуации :)

 

Файлы обработки:

-