Дерево значений раскрасить строку

Раскрасить дерево значений

Добрый день. Дерево значение имеет структуру 3х уровней. Подскажите как раскрасить элементы последнего уровня если они есть. Т.Е.

Уровень1
Уровень2
Уровень3(его надо раскрасить)
Уровень2
Уровень2
Уровень3(его надо раскрасить)
Уровень1
P.S Формы обычные

СтрокаДереваЗначений (ValueTreeRow)
Уровень (Level)
Синтаксис:

Уровень()
Возвращаемое значение:

Тип: Число.
Для строки, не имеющей родителя, уровень будет равен 0.
Описание:

Получает уровень строки дерева значений.

Сервер, толстый клиент, внешнее соединение.
Примечание:

Нумерация уровней дерева значений начинается с 0.

(3) (2) это то понятно, как перебирать

Тип будет СтрокаДереваЗначения, а не ТабличноеПоле. Соответствие как навести? Индексов нет, перебирать ЭлементыФормы.ДеревоЗначений.Значение.Строки нельзя

ПриПолученииДанных(Элемент, ОформленияСтрок)
Для каждого ОформлениеСтроки
Если ОформлениеСтроки.ДанныеСтроки.Строки.Количество()=0 Тогда
ОформлениеСтроки.ЦветТекста = Новый Цвет(255,255,0);
КонецЕсли;

используй условное оформление формы.

(5) угу. а что делать, когда добавили строку?

При выводи строки
Если ДанныеСтроки.уровень() = 2 Тогда
ОформлениеСтроки.ЦветФона = Новый Цвет(255,255,0);
КонецЕсли;

(9) если нужно что-то делать в табличной части (форма, отчет) лучше использовать условное оформление.

Источник

8.2 Упр.прилож.: Дерево значений — можно ли выделить цветом/шрифтом одну строку ?

Вывожу в упр.форму дерево значений — могу посмотреть тек.строку/тек.данные есть еще тек.элемент где можно менять цвет/шрифт, но это, похоже меняет во всем списке. Есть ли варианты выделить одну конкретную строку программно ?

Или только таб.документ делать ?

Как выделить одну строку другим цветом
Не судите строго, второй день изучаю С++. Прочитал много тем, нашел несколько подходящих тем, но.

Как выделить цветом одну строку в ленточной форме? Help!
Коллеги! Может быть, кто-то знает, как решить следующую задачку? Буду очень признателен за помощь.

Можно ли как-то выделить строку другим цветом?
так не катит,он весь текст делает таким.

TCalendarView как выделить определенные даты цветом или шрифтом?
На форме имеется TCalendarView и TDBGrid стоит задача выделить в календаре цветом или шрифтом.

Читайте также:  Как обрабатывать дерево вагонка

Эксперт 1С

Извините за тавтологию, но тек.строка (Текущая строка) по вашему не ОДНА конкретная строка?

Добавлено через 53 секунды
Для изменения шрифта и цвета в управляемых формах, строки не нужны. Есть объект «Условноеоформление» — читайте справку

А где у дерева значений условное уформление ? Усл.оформление у формы в целом в моем варианте не работает — я дерево программно создаю.

Эксперт 1С

Так и просят код за них написать.
Что за «Пррограммисты»пошли

УО = УсловноеОформление.Элементы.Добавить(); УО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Красный); ЭУ = УО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭУ.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДЗ.Колонка1"); ЭУ.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭУ.ПравоеЗначение = "4"; ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");

ЦитатаСообщение от BVladimir2 Посмотреть сообщение

ЦитатаСообщение от Dethmontt Посмотреть сообщение

УО = УсловноеОформление.Элементы.Добавить(); УО.Оформление.УстановитьЗначениеПараметра("ЦветФона",WebЦвета.Красный); ЭУ = УО.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ЭУ.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("ДЗ.Колонка1"); ЭУ.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ЭУ.ПравоеЗначение = "4"; ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");

Это усл.оформление динамического списка, я так понимаю. Мне он не подходит, по ряду причин. У меня в форме создан реквизит типа
«Дерево значений» и выведен на форму. Само дерево заполняется программно (и выводится в соотв. элемент). Усл.оформления здесь нигде не нашел, ну кроме самой формы, конечно. Отсюда вопрос и возник, можно ли как-то изменить одну строку или не вариант ?

Эксперт 1С

Лучший ответ

Сообщение было отмечено как решение

Решение

ЭТОТ код для реквизита формы с типом «ДЕРЕВОЗННАЧЕНИЙ»
я где то разве писал про динамический список?

Добавлено через 1 минуту
КОд не для динамического списка, а для любой таблицы формы.

Добавлено через 19 секунд

Добавлено через 2 минуты

Делаете выводы, даже не соизволив проверить.

ЦитатаСообщение от Dethmontt Посмотреть сообщение

Ну, я, собственно, тоже подумал, что это к дин списку относится (поскольку в УФ ещё — честно признаться — пальцем о палец не ударял) и ввёл человека в заблуждение, натолкнув на эту мысль. Но что правда, то правда: надо ВСЁ ПРОВЕРЯТЬ НА ПРАКТИКЕ. Спасибо.

Читайте также:  Дерево елочкой на стене

ЦитатаСообщение от Dethmontt Посмотреть сообщение

Спасибо, заработало !
Но это код для усл.оформления формы в целом ? Я пробовал устанавливать усл.оформл. формы в конфигураторе — не сработало. А после програмн. добавления уже после формиров. дерева все заработало и новые добавленные поля можно увидеть в табло вместе с созданными в конфигураторе.

Эксперт 1С

ЦитатаСообщение от BVladimir2 Посмотреть сообщение

Тут указываешь какие поля нужно оформлять

ОП = УО.Поля.Элементы.Добавить(); ОП.Поле = Новый ПолеКомпоновкиДанных("ДЗКолонка1");

CheckedListBox выделить некоторые элементы жирным шрифтом или цветом
CheckedListBox выделить некоторые элементы жирным шрифтом или цветом. возможно ли это? в ListBox.

Выделить строку в ListView жирным шрифтом
Здравствуйте!Возможно ли выделить строку в ListView жирным шрифтом. Вот код кнопки которая.

Как выделить строку в RichEdit жирным шрифтом
Здравствуйте. Как оптимальнее всего написать на Делфи следующее: RichEdit.Lines становится.

ComboBox. Можно ли выделить отдельные элементы жирным шрифтом?
Хочу некоторые элементы выделить цветом или жирным шрифтом. Это возможно?

Выделить в textBox одну или несколько букв другим цветом
На форме имеется элемент Textbox с некоторым текстом. Подскажите пожалуйста, как выделить одну.

Выделить строку DataGridView цветом
Доброго времени суток! Подскажите пожалуйста, как выделить строку в datagridview.

Источник

Полезности | Дерево значений | Обычные формы |

Работая с таким объектом, как дерево значений, нужно было автоматизировать ряд функций и процедур, связанных с настройкой и оформлением дерева значений. Поскольку дерево значений формируется или заполняется программно, заранее неизвестно количество колонок, строк и уровней в дереве значений, потому в свойствах объекта нет возможности настройки формата колонок, настройки расположения колонок, установки определенной ширины колонок, нет возможности выделения числовых отрицательных значений в колонках и т. д. Также меня очень раздражала ситуация, когда дерево создается программно, все заголовки колонок отображаются слитно в соответствии с их наименованием в коде. В данной статье я попробовал собрать наиболее полезны методы «борьбы» с этими казусами. Примерно использование этих методов в каком нибудь отчете, будет выглядеть так, как показано на скриншоте ниже.

//////////////////////////////////////////////////////////////////////////////// // ПЕРЕМЕННЫЕ МОДУЛЯ Перем ТекущееДерево; // Функция возвращает дерево значений // Функция Получить_ДеревоЗначений() Запрос = Новый Запрос; Запрос.Текст = ""; РезультатЗапроса = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); Возврат РезультатЗапроса; КонецФункции // Процедура - выполняет заполнение дерева значений // Процедура ЗаполнитьДеревоЗначений() // Очистить дерево перед заполнением ДеревоЗначений.Строки.Очистить(); // Выборка данных (запрос) ДеревоЗначений = Получить_ДеревоЗначений(); // Массив удаляемых колонок из дерева МассивУдаляемыхКолонок = Новый Массив; МассивУдаляемыхКолонок.Добавить("Колонка_1"); МассивУдаляемыхКолонок.Добавить("Колонка_2"); ОформитьДеревоЗначений(ДеревоЗначений, "Наименование", МассивУдаляемыхКолонок); КонецПроцедуры // Процедура - оформляет колонки дерева // Процедура ОформитьДеревоЗначений(Дерево, Наименование, МассивУдаляемыхКолонок = Неопределено) ТекущееДерево = Дерево; Если Наименование = "Наименование" Тогда Дерево.Колонки.Колонка_Имя.Заголовок = "Красивый заголовок с пробелами"; Дерево.Колонки.Колонка_Имя.Ширина = 15; // Удаляем ненужные колонки Если МассивУдаляемыхКолонок <> Неопределено Тогда Удалить_Колонки_ДеревоЗначений(МассивУдаляемыхКолонок, Дерево); КонецЕсли КонецЕсли; НастройкаФорматаКолонок(Дерево); НастройкаРасположенияКолонок(ДеревоЗначений, "ДеревоЗначений"); КонецПроцедуры // () // Процедура - выполняет настройкку формата колонок в дереве // Процедура НастройкаФорматаКолонок(СтрокаДерево) Дерево = ТекущееДерево; Строки = ТекущееДерево.Строки; Колонки = ТекущееДерево.Колонки; Для Каждого стр из Строки Цикл Для Каждого Колонка из Колонки Цикл Если ТипЗнч(стр[Колонка.Имя]) = Тип("Число") Тогда стр[Колонка.Имя] = Формат(стр[Колонка.Имя], "ЧДЦ=2"); КонецЕсли; КонецЦикла; НастройкаФорматаКолонок(стр); КонецЦикла; КонецПроцедуры // Процедура - выполняет настройкку расположения колонок в дереве // Процедура НастройкаРасположенияКолонок(Дерево, Наименование) Колонки = ТекущееДерево.Колонки; Для Каждого Колонка Из Колонки Цикл Тип_Число = Дерево.Колонки[Колонка.Имя].ТипЗначения.СодержитТип(Тип("Число")); Тип_Дата = Дерево.Колонки[Колонка.Имя].ТипЗначения.СодержитТип(Тип("Дата")); Если Тип_Число Или Тип_Дата Тогда Колонка.ГоризонтальноеПоложениеВШапке = ГоризонтальноеПоложение.Центр; Колонка.ГоризонтальноеПоложениеВКолонке = ГоризонтальноеПоложение.Центр; Колонка.ГоризонтальноеПоложениеВПодвале = ГоризонтальноеПоложение.Центр; КонецЕсли; КонецЦикла; КонецПроцедуры // Процедура выполняет удаление ненужных колонок из дерева значений // Процедура Удалить_Колонки_ДеревоЗначений(Массив, Дерево) Для Каждого Имя Из Массив Цикл Дерево.Колонки.Удалить(Имя); КонецЦикла; КонецПроцедуры Процедура ДеревоЗначенийПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) // Раскраска дерева по уровнях Если ДанныеСтроки.Уровень() = 0 Тогда ОформлениеСтроки.ЦветФона = WebЦвета.Циан; ОформлениеСтроки.Шрифт = Новый Шрифт(,,Истина); ИначеЕсли ДанныеСтроки.Уровень() = 1 Тогда ОформлениеСтроки.ЦветФона = WebЦвета.ЦианСветлый; //ОформлениеСтроки.Шрифт = Новый Шрифт(,,Истина); КонецЕсли; // Виделим отрицательные значения в колонках Для Каждого Колонка Из Элемент.Колонки Цикл Если ТипЗнч(ДанныеСтроки[Колонка.Имя]) = Тип("Число") Тогда Если ДанныеСтроки[Колонка.Имя] < 0 Тогда ОформлениеСтроки.Ячейки[Колонка.Имя].ЦветТекста = WebЦвета.Красный; КонецЕсли; ДанныеСтроки[Колонка.Имя] = Формат(ДанныеСтроки[Колонка.Имя], "ЧДЦ=2"); КонецЕсли; КонецЦикла; КонецПроцедуры 

Источник

Читайте также:  Шелест деревьев от ветра
Оцените статью