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

27.12.18

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
82_ДиалогВыбораЦветаRGB_УФ
.epf 59,87Kb
146
146 Скачать (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С предназначен для обработки изображений в режиме «Предприятие», с возможностью РИСОВАТЬ на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    63401    44    59    

82

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

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

2400 руб.

29.06.2020    19231    26    6    

41

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

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

1500 руб.

06.10.2020    10539    7    7    

11

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

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

20.08.2024    19062    mrXoxot    44    

126

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

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

27.05.2024    8894    smielka    37    

103

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

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

27.12.2023    16682    1142    elcoan    50    

123

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

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

2 стартмани

10.04.2023    12255    165    acces969    31    

124
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Yashazz 4797 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. Добавил пример использования.
Оставьте свое сообщение