Диалог выбора цвета с возможностью определения составляющих цвета RGB для УФ.

27.12.18

Разработка - Работа с интерфейсом

Один из вариантов решения известной проблемы определения составляющих цвета RGB при использовании штатного диалога выбора цвета.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
82_ДиалогВыбораЦветаRGB_УФ
.epf 59,87Kb
145
145 Скачать (1 SM) Купить за 1 850 руб.

Стандартный типовой диалог выбора цвета предлагает выбор из цветов вида: элемент стиля, web-цвет и ввод числовых значений составляющих цвета RGB, при этом нет гарантии каким способом будет выбрано значение цвета пользователем. Составляющие цвета RGB имеются только в абсолютном виде цвета (при вводе составляющих цвета RGB вручную). Есть ряд задач в которых необходимо хранить и передавать именно составляющие цвета RGB, а не сам цвет как тип, для таких целей может пригодиться  предлагаемый вариант.

Возможности: 

Для быстроты и удобства использования пользователями цвет выбирается мышкой, так же имеется возможность (при необходимости) скопировать значения цвета в HEX и RGB кодировке в буфер обмена. Диалог выбора цвета реализован на управляемых формах, без использования ВК, обработка самодостаточная (в ней присутствует все необходимое для работы).

Возвращаемое значение: тип цвет в абсолютном виде, который можно разложить на составляющие RGB.

 

 P.S.

Пример подстановки текущего изменяемого цвета в диалог выбора цвета при его открытии:

//Процедуры и функции
&НаСервере
Функция ПолучитьЦветHEX(Знач Красный = 0, Знач Зеленый = 0, Знач Синий = 0) Экспорт

   
ЦветHEX = "";

   
ЦифрыHEX = "0123456789abcdef";


   
КрасныйHEX = "";

    Если
Красный <= 0 Тогда

       
КрасныйHEX = "00";

    Иначе

        Пока
Красный > 0 Цикл

           
КрасныйHEX = Сред(ЦифрыHEX, Красный % 16 + 1, 1) + КрасныйHEX;

           
Красный = Цел(Красный / 16) ;

        КонецЦикла;

    КонецЕсли;


   
ЗеленыйHEX = "";

    Если
Зеленый <= 0 Тогда

       
ЗеленыйHEX = "00";

    Иначе

        Пока
Зеленый > 0 Цикл

           
ЗеленыйHEX = Сред(ЦифрыHEX, Зеленый % 16 + 1, 1) + ЗеленыйHEX;

           
Зеленый = Цел(Зеленый / 16) ;

        КонецЦикла;

    КонецЕсли;


   
СинийHEX = "";

    Если
Синий <= 0 Тогда

       
СинийHEX = "00";

    Иначе

        Пока
Синий > 0 Цикл

           
СинийHEX = Сред(ЦифрыHEX, Синий % 16 + 1, 1) + СинийHEX;

           
Синий = Цел(Синий / 16) ;

        КонецЦикла;

    КонецЕсли;

   
ЦветHEX = "#" + ?(СтрДлина(КрасныйHEX) = 1, "0" + КрасныйHEX, КрасныйHEX) + ?(СтрДлина(ЗеленыйHEX) = 1, "0" + ЗеленыйHEX, ЗеленыйHEX) + ?(СтрДлина(СинийHEX) = 1, "0" + СинийHEX, СинийHEX);

    Возврат
ЦветHEX;

КонецФункции



//Обработчики событий
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

   
ТекстДиалогаВыбораЦвета  = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ТекстДиалогаВыбораЦвета").ПолучитьТекст();

   
ТекущийЦвет = Неопределено;

   
Параметры.Свойство("ТекущийЦвет", ТекущийЦвет);

    Если Не
ТекущийЦвет = Неопределено Тогда

       
Объект.ВыбранныйЦвет = ТекущийЦвет;

       
Красный     = ТекущийЦвет.Красный;
       
Зеленый     = ТекущийЦвет.Зеленый;
       
Синий       = ТекущийЦвет.Синий;

       
ТекстДиалогаВыбораЦвета = СтрЗаменить(ТекстДиалогаВыбораЦвета, "name='color' value='#000000'", "name='color' value='" + ПолучитьЦветHEX(Красный, Зеленый, Синий) + "'");
       
ТекстДиалогаВыбораЦвета = СтрЗаменить(ТекстДиалогаВыбораЦвета, "name='colorR' value='0'", "name='colorR' value='" + Строка(Красный) + "'");
       
ТекстДиалогаВыбораЦвета = СтрЗаменить(ТекстДиалогаВыбораЦвета, "name='colorG' value='0'", "name='colorG' value='" + Строка(Зеленый) + "'");
       
ТекстДиалогаВыбораЦвета = СтрЗаменить(ТекстДиалогаВыбораЦвета, "name='colorB' value='0'", "name='colorB' value='" + Строка(Синий) + "'");

    КонецЕсли;

   
Объект.ДиалогВыбораЦвета = ТекстДиалогаВыбораЦвета;

КонецПроцедуры



//Обработчики команд
&НаКлиенте
Процедура ДиалогВыбораЦветаПриНажатии(Элемент, ДанныеСобытия, СтандартнаяОбработка)

   
СоставляющиеВыбранногоЦвета = Элемент.Документ;

    Если
СоставляющиеВыбранногоЦвета = Неопределено Тогда Возврат; КонецЕсли;

   
colorR      = СоставляющиеВыбранногоЦвета.getElementById("colorR");
   
colorG      = СоставляющиеВыбранногоЦвета.getElementById("colorG");
   
colorB      = СоставляющиеВыбранногоЦвета.getElementById("colorB");

   
Красный     = ?(colorR = Неопределено, 0, colorR.Value);
   
Зеленый     = ?(colorG = Неопределено, 0, colorG.Value);
   
Синий       = ?(colorB = Неопределено, 0, colorB.Value);

   
Объект.ВыбранныйЦвет = Новый Цвет(Красный, Зеленый, Синий);

КонецПроцедуры


&НаКлиенте
Процедура КомандаОК(Команда)

   
Закрыть(Объект.ВыбранныйЦвет);

КонецПроцедуры


&НаКлиенте
Процедура КомандаОтмена(Команда)

   
Закрыть(Неопределено);

КонецПроцедуры

 

Пример вызова диалога выбора цвета:

//Процедуры и функции

&НаКлиенте
Процедура УстановитьНовыйЦветКлиент(Элемент, СтандартнаяОбработка)

   
Элемент_Имя     = Элемент.Имя;

   
ТекущийЦвет     = Объект[Элемент_Имя];

   
ТекПараметры    = Новый Структура("ТекущийЦвет", ТекущийЦвет);

   
ВыбранныйЦвет   = ОткрытьФормуМодально("Обработка.ИмяОбработки.Форма.ФормаДиалогаВыбораЦвета", ТекПараметры, ЭтаФорма);

    Если Не
ВыбранныйЦвет = Неопределено Тогда

       
Объект[Элемент_Имя] = ВыбранныйЦвет;

    КонецЕсли;

   
СтандартнаяОбработка = Ложь;

КонецПроцедуры


//Обработчики событий
&НаКлиенте
Процедура ИзменяемыйЦветНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

   
УстановитьНовыйЦветКлиент(Элемент, СтандартнаяОбработка);

КонецПроцедуры

См. также

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами.

2400 руб.

29.06.2020    18416    26    6    

40

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    13916    mrXoxot    43    

114

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    6387    smielka    37    

98

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    13786    830    elcoan    47    

114

Инструментарий разработчика Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Подходит для создания web-страниц для замены управляемых форм 1С, красивых отчетов, интерфейса мобильного приложения на платформе 1С и для простых страниц веб-сайтов.

2 стартмани

10.04.2023    11375    161    acces969    31    

122

Работа с интерфейсом Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

"MVC плохо применима в 1С" - познакомьтесь с моделью состояния и, возможно, ваше мнение поменяется! Представленное решение является эволюционным развитием идеи реализации MVC для 1С. В новой версии добавлены DSL для описания модели состояния, а также параметризация свойств параметров и элементов формы.

1 стартмани

05.07.2022    5158    kalyaka    6    

33

Работа с интерфейсом Программист Пользователь Платформа 1С v8.3 8.3.14 Конфигурации 1cv8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Абонемент ($m)

Ещё с времен платформы 8.3.13 можно изменять цвет стилей интерфейса главного окна. Данное расширение позволит вам выбрать из подготовленных десятка стилей на свой вкус.

1 стартмани

01.07.2022    23406    379    rpgshnik    67    

93
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4779 05.05.13 10:59 Сейчас в теме
Недавно сталкивался с такой задачей. Нужная вещь. Если кому надо, могу подкинуть функцию преобразования из RGB в 16-ричный.
2. kondi55 10 04.01.14 23:52 Сейчас в теме
Афигеть! Супер! Спасибо! Встроил, пользуюсь! С новым годом и Рождеством, Автор!
3. DO_WHILE_LOOP 359 10.01.14 15:39 Сейчас в теме
(2) kondi55,
Спасибо. Всех благ, с новым годом и Рождеством!
P.S. Добавил пример использования.
Оставьте свое сообщение