Продолжаю рисовать «ручное» дерево
Продолжаю попытки отобразить древовидную структуру, начало тут:
Пробую сдвинуть задачи с помощью сильного выделения, потому что отступа в группе не нашел.
В модели выглядит так:
На практике получилось так:
До этого я вручную использовал декорацию для вывода оступа (как раз перед командой отступа).
Видимо, придется и сейчас использовать декорацию. Правда, между задачами большие отступы, не понятно почему. Приходится использовать раскраску групп, чтобы понять в чем дело:
Возникло подозрение, что так широко из-за вывода заголовков. Отключаю во всех группах, получаю такое:
Уже получше, но с отступами проблема — они избыточно показываются там, где нет подчиненных элементов.
Поэтому решаю отступ разместить перед кнопкой развертки:
Получается так, как надо, на всякий случай проверил создав еще задачу 2.2.1, все отображается корректно.
Но отступы великоваты, попробую сделать все группы с выделением «Нет», не помогло. Добавил вертикальный интервал = Нет, это сделало чуть компактнее, но не окончательно:
На обработке-модели вижу тоже, что избавиться от промежутка не получается:
Однако, оказалось, что если убрать цвет фона, то лишнее выделение убирается. Как ни странно, оно происходит из за выделения цвета фона:
Правда, при этом убрались и отступы. Видимо, я не правильно разметил страницу. Пробую поправить ситуацию.
Получается опять не сразу, сначала опять появляются лишние отступы:
Получилось поправить так:
Чтобы смотрелось красиво, вернул вертикальные интервалы по-умолчанию:
На первом уровне правда лишний отступ, но не критично. В принципе, его можно убирать через видимость для перфекционизма.
Заменил дефис на невидимый пробел в итоге получается так:
Структура групп такая:
Код по-своему элегантен:
//== Создаем место для дерева задач, отображаемых вручную //В - вертикально // ГПЗ - горизонтально для подзадачи // Отступ (Декорация) // ГЭ - вертикально для элементов задачи // Г - горизонтально для основных элементов задачи // Кнопка свертки-развертки // Пометка // Наименование // З - группа для починенной задачи // Группа (подчиненные элементы) ВыводитьЦвета = ложь; //Выводить цвета для отладки ИмяГруппыЗадачиВ = ИмяГруппыЗадачи(СтрокаЗадачи, "В") ; //Вертикальная группа ИмяГруппыЗадачиГ = ИмяГруппыЗадачи(СтрокаЗадачи, "Г"); //Горизонтальная группа для пометки и наименования ИмяГруппыЗадачиГЭ = ИмяГруппыЗадачи(СтрокаЗадачи, "ГЭ"); ИмяГруппыЗадачиГПЗ = ИмяГруппыЗадачи(СтрокаЗадачи, "ГПЗ"); ГруппаЗадачиВ = Контекст.Форма.Элементы.Добавить(ИмяГруппыЗадачиВ, Тип("ГруппаФормы"), ВГруппу); ГруппаЗадачиВ.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаЗадачиВ.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; Если ВыводитьЦвета Тогда ГруппаЗадачиВ.ЦветФона = WebЦвета.БледноЗеленый; КонецЕсли; ГруппаЗадачиВ.ОтображатьЗаголовок = ложь; ГруппаЗадачиВ.Отображение = ОтображениеОбычнойГруппы.Нет; //ГруппаЗадачиВ.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Нет; ГруппаЗадачиГПЗ = Контекст.Форма.Элементы.Добавить(ИмяГруппыЗадачиГПЗ, Тип("ГруппаФормы"), ГруппаЗадачиВ); ГруппаЗадачиГПЗ.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаЗадачиГПЗ.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; Если ВыводитьЦвета Тогда ГруппаЗадачиГПЗ.ЦветФона = WebЦвета.СеребристоСерый; КонецЕсли; ГруппаЗадачиГПЗ.ОтображатьЗаголовок = ложь; ГруппаЗадачиГПЗ.Отображение = ОтображениеОбычнойГруппы.Нет; //ГруппаЗадачиГПЗ.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Нет; ИмяОтступаЗадачи = ИмяГруппыЗадачи(СтрокаЗадачи, "Отступ"); ОтступЗадачи = Контекст.Форма.Элементы.Добавить(ИмяОтступаЗадачи, Тип("ДекорацияФормы"), ГруппаЗадачиГПЗ); ОтступЗадачи.Вид = ВидДекорацииФормы.Надпись; ОтступЗадачи.Заголовок = "-"; ГруппаЗадачиГЭ = Контекст.Форма.Элементы.Добавить(ИмяГруппыЗадачиГЭ, Тип("ГруппаФормы"), ГруппаЗадачиГПЗ); ГруппаЗадачиГЭ.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаЗадачиГЭ.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; Если ВыводитьЦвета Тогда ГруппаЗадачиГЭ.ЦветФона = WebЦвета.Желтый; КонецЕсли; ГруппаЗадачиГЭ.ОтображатьЗаголовок = ложь; ГруппаЗадачиГЭ.Отображение = ОтображениеОбычнойГруппы.Нет; //ГруппаЗадачиГЭ.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Нет; ГруппаЗадачиГ = Контекст.Форма.Элементы.Добавить(ИмяГруппыЗадачиГ, Тип("ГруппаФормы"), ГруппаЗадачиГЭ); ГруппаЗадачиГ.Вид = ВидГруппыФормы.ОбычнаяГруппа; ГруппаЗадачиГ.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; Если ВыводитьЦвета Тогда ГруппаЗадачиГ.ЦветФона = WebЦвета.БледноЗолотистый; КонецЕсли; ГруппаЗадачиГ.ОтображатьЗаголовок = ложь; ГруппаЗадачиГ.Отображение = ОтображениеОбычнойГруппы.Нет; //ГруппаЗадачиГ.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Нет; ГруппаЗадачи = Контекст.Форма.Элементы.Добавить(ИмяГруппыЗадачи, Тип("ГруппаФормы"), ГруппаЗадачиГЭ); ГруппаЗадачи.Вид = ВидГруппыФормы.ОбычнаяГруппа; //ГруппаНовая.Заголовок = Заголовок; ГруппаЗадачи.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; Если ВыводитьЦвета Тогда ГруппаЗадачи.ЦветФона = WebЦвета.Розовый; КонецЕсли; ГруппаЗадачи.ОтображатьЗаголовок = ложь; ГруппаЗадачи.Отображение = ОтображениеОбычнойГруппы.Нет; //ГруппаЗадачи.ВертикальныйИнтервал = ИнтервалМеждуЭлементамиФормы.Нет; //ИмяГруппыВерт = ИмяГруппыЗадачи + "_Гор"; //ГруппаВерт = Контекст.Форма.Элементы.Добавить(ИмяГруппыЗадачи, Тип("ГруппаФормы"), ВГруппу); //ГруппаЗадачи.Вид = ВидГруппыФормы.ОбычнаяГруппа; ////ГруппаНовая.Заголовок = Заголовок; //ГруппаЗадачи.Группировка = ГруппировкаПодчиненныхЭлементовФормы.ГоризонтальнаяВсегда; //== Создаем элементы ИмяКоманды = ИмяГруппыЗадачи(СтрокаЗадачи, "Развертка"); КомандаФормы = Контекст.Форма.Команды.Добавить(ИмяКоманды); КомандаФормы.Действие = "Развертка"; //КомандаФормы.Заголовок = "+Задача"; КомандаФормы.Картинка = БиблиотекаКартинок.БС_Задача_Плюс; КомандаФормы.ИзменяетСохраняемыеДанные = Ложь; КомандаФормы.Отображение = ОтображениеКнопки.Картинка; НовыйЭлемент = Контекст.Форма.Элементы.Добавить(ИмяКоманды, Тип("КнопкаФормы"), ГруппаЗадачиГ); НовыйЭлемент.ИмяКоманды = ИмяКоманды; НовыйЭлемент.ОтображениеФигуры = ОтображениеФигурыКнопки.Нет; НовыйЭлемент = Контекст.Форма.Элементы.Добавить(ИмяПометкиЗадачи, Тип("ПолеФормы"), ГруппаЗадачиГ); НовыйЭлемент.Вид = ВидПоляФормы.ПолеФлажка; НовыйЭлемент.ПутьКДанным = ИмяПометкиЗадачи; НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет; НовыйЭлемент = Контекст.Форма.Элементы.Добавить(ИмяНаименованияЗадачи,Тип("ПолеФормы"),ГруппаЗадачиГ); НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода; НовыйЭлемент.ПутьКДанным = ИмяНаименованияЗадачи; НовыйЭлемент.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Нет;
Понадобилось много бумажек для рисования групп:
Еще немного доработал, чтобы задачи без подчиненных элементов выводились кружочками:
Вот такими, нарисованными в MS Paint:
Но потом решил, что лучше выводить пустую картинку для таких кнопок, получилось красиво:
Свежие комментарии