Условное оформление дерева значений на управляемой форме
Предположим, мы создали некую обработку, которая выполняет те или иные действия над каталогом товаров. При этом у пользователя должна быть возможность выбирать категории товаров, для которых будут применяться эти действия. Логичным выбором будет выведение на форму иерархического списка категорий, где пользователь сможет галочками выбирать необходимые категории. Если пользователь отмечает галочкой категорию верхнего уровня, то подразумевается, что все вложенные категории также будут обработаны. Логично будет закрыть вложенные строки для редактирования и как-то пометить их, чтобы пользователю было понятно, что они будут обработаны вместе с родительской категорией. Вот здесь нам и пригодится условное оформление.
Предлагаемая обработка демонстрирует управление доступностью отдельных строк в дереве значений (кстати, аналогичный метод можно использовать и для таблицы значений). Вот как это выглядит:
Работа с условным оформлением хорошо описана здесь:
Единственное, столкнулся с интересным нюансом. В отборе компоновки (который используется, чтобы нам оформить именно нужные строки) и в оформляемых полях (которые указывают колонки, которые мы будем оформлять) имена полей разные, хотя тип один и тот же — ПолеКомпоновкиДанных.
При отборе мы указываем путь к данным:
ЭлементОтбора = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоКаталог.Категория"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ЭлементОтбора.ПравоеЗначение = СписокОтб; ЭлементОтбора.Использование = Истина;
А в полях оформления мы указываем путь к полю формы:
ПолеОформления = ЭлементОформления.Поля.Элементы.Добавить(); ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ДеревоКаталогКатегория"); ПолеОформления.Использование = Истина;
Протестировано на платформе 1С 8.3.11.3034
Источник
Программное условное оформление строк ДереваЗначений. Условие по Родителю
Управляемые формы. Необходимо раскрасить строки дерева значений в зависимости от значений строки-родителя. Например, если в строке-родителе Количество=0, тогда все подчиненные строки раскрашиваем в зеленый цвет. Как этого добиться?
Написал такой код, но как в нем обратиться к родителю?
ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ЭлементОтбора = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДеревоЗначений1.КоличествоНаСкладеВсего"); ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭлементОтбора.ПравоеЗначение = 0; ОформляемоеПоле = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных("ДеревоЗначений1"); ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
Никак. Добавь в строку колонку с признаком, который изменяешь при изменении количества в родителе и заполняй его по всем подчиненным строкам
1+ Запись условного оформления не может быть привязана к конкретной строке дерева (таблицы), но должна иметь возможность определить, красить данную строку или нет.
Потому алгоритм только один нужен признак в каждой строке, по которому будет ориентироваться УО. И не обязательно им рулить программно.
Источник
Условное оформление Дерева на УФ
Прошу помощи у специалистов по УФ. Сам таковым пока не являюсь. Хочется выделить строки дерева значений «ДеревоПлатежей», расположенного на форме. Строки с незаполненным значением колонки «ВидНалога» в дереве имеются. Не ругается, но и не оформляет ничего.
ЭлементОтбора = НовыйЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип(«ЭлементОтбораКомпоновкиДанных»));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(«ДеревоПлатежей.ВидНалога»);
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Заполнено;
ЭлементОтбора.Использование = Истина;
ЭлементЦветаОформления = НовыйЭлементУсловногоОформления.Оформление.Элементы.Найти(«TextColor»);
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ОтметкаОтрицательногоВыполненияЗадачи.Значение;
ЭлементЦветаОформления.Использование = Истина;
КонецПроцедуры
(0) у тебя статичный набор критериев раскраски, зачем программно красить?
В свойствах ДС (самого, а не у элемента формы) установи что тебе и как раскрасить.
(1) Действительно, поля указать забыл. Добавил в конец
НовыйЭлемент = НовыйЭлементУсловногоОформления.Поля.Элементы.Добавить();
НовыйЭлемент.Поле = Новый ПолеКомпоновкиДанных(«ВидНалога»);
Вот тут наверное надо конкретный цвет указывать.
ЭлементЦветаОформления.Значение = Метаданные.ЭлементыСтиля.ОтметкаОтрицательногоВыполненияЗадачи.Значение;
(3). Реквизитом отчета, добавленного на форму является ДеревоЗначений, а не динамический список. Я не могу настроить его не программно.
Источник
8.2 Упр.прилож.: Дерево значений — можно ли выделить цветом/шрифтом одну строку ?
Вывожу в упр.форму дерево значений — могу посмотреть тек.строку/тек.данные есть еще тек.элемент где можно менять цвет/шрифт, но это, похоже меняет во всем списке. Есть ли варианты выделить одну конкретную строку программно ?
Или только таб.документ делать ?
Как выделить одну строку другим цветом
Не судите строго, второй день изучаю С++. Прочитал много тем, нашел несколько подходящих тем, но.
Как выделить цветом одну строку в ленточной форме? Help!
Коллеги! Может быть, кто-то знает, как решить следующую задачку? Буду очень признателен за помощь.
Можно ли как-то выделить строку другим цветом?
так не катит,он весь текст делает таким.
TCalendarView как выделить определенные даты цветом или шрифтом?
На форме имеется TCalendarView и TDBGrid стоит задача выделить в календаре цветом или шрифтом.
Извините за тавтологию, но тек.строка (Текущая строка) по вашему не ОДНА конкретная строка?
Добавлено через 53 секунды
Для изменения шрифта и цвета в управляемых формах, строки не нужны. Есть объект «Условноеоформление» — читайте справку
А где у дерева значений условное уформление ? Усл.оформление у формы в целом в моем варианте не работает — я дерево программно создаю.
Так и просят код за них написать.
Что за «Пррограммисты»пошли
УО = УсловноеОформление.Элементы.Добавить(); УО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Красный); ЭУ = УО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭУ.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДЗ.Колонка1"); ЭУ.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭУ.ПравоеЗначение = "4"; ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");
Сообщение от BVladimir2
Сообщение от Dethmontt
УО = УсловноеОформление.Элементы.Добавить(); УО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Красный); ЭУ = УО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭУ.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДЗ.Колонка1"); ЭУ.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭУ.ПравоеЗначение = "4"; ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");
Это усл.оформление динамического списка, я так понимаю. Мне он не подходит, по ряду причин. У меня в форме создан реквизит типа
«Дерево значений» и выведен на форму. Само дерево заполняется программно (и выводится в соотв. элемент). Усл.оформления здесь нигде не нашел, ну кроме самой формы, конечно. Отсюда вопрос и возник, можно ли как-то изменить одну строку или не вариант ?
Сообщение было отмечено как решение
Решение
ЭТОТ код для реквизита формы с типом «ДЕРЕВОЗННАЧЕНИЙ»
я где то разве писал про динамический список?
Добавлено через 1 минуту
КОд не для динамического списка, а для любой таблицы формы.
Добавлено через 19 секунд
Добавлено через 2 минуты
Делаете выводы, даже не соизволив проверить.
Сообщение от Dethmontt
Ну, я, собственно, тоже подумал, что это к дин списку относится (поскольку в УФ ещё — честно признаться — пальцем о палец не ударял) и ввёл человека в заблуждение, натолкнув на эту мысль. Но что правда, то правда: надо ВСЁ ПРОВЕРЯТЬ НА ПРАКТИКЕ. Спасибо.
Сообщение от Dethmontt
Спасибо, заработало !
Но это код для усл.оформления формы в целом ? Я пробовал устанавливать усл.оформл. формы в конфигураторе — не сработало. А после програмн. добавления уже после формиров. дерева все заработало и новые добавленные поля можно увидеть в табло вместе с созданными в конфигураторе.
Сообщение от BVladimir2
Тут указываешь какие поля нужно оформлять
ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");
CheckedListBox выделить некоторые элементы жирным шрифтом или цветом
CheckedListBox выделить некоторые элементы жирным шрифтом или цветом. возможно ли это? в ListBox.
Выделить строку в ListView жирным шрифтом
Здравствуйте!Возможно ли выделить строку в ListView жирным шрифтом. Вот код кнопки которая.
Как выделить строку в RichEdit жирным шрифтом
Здравствуйте. Как оптимальнее всего написать на Делфи следующее: RichEdit.Lines становится.
ComboBox. Можно ли выделить отдельные элементы жирным шрифтом?
Хочу некоторые элементы выделить цветом или жирным шрифтом. Это возможно?
Выделить в textBox одну или несколько букв другим цветом
На форме имеется элемент Textbox с некоторым текстом. Подскажите пожалуйста, как выделить одну.
Выделить строку DataGridView цветом
Доброго времени суток! Подскажите пожалуйста, как выделить строку в datagridview.
Источник