helpf.pro
Регистрация

v8.2 УП: Диалог выбора цвета

shcoder
20.10.2011 15:18Прочитано: 15663
Когда я использую стандартный диалог выбора цвета (который ДВЦ = Новый ДиалогВыбораЦвета), у меня открывается окно которое совершенно не устраивает. title
В частности тем, что возвращает цвета в виде строк, а не в виде RGB. В 1С есть расширенные диалог выбора цвета, который вызывается при задании цвета фона элемента.
title

Могу ли я его вызвать программно для получения цвета в формате RGB?
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
20.10.2011 16:18Ответ № 1
(0) shcoder, попробуй Виндовый:
Код 1C v 7.x
 Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Диалог=СоздатьОбъект("MSComDlg.CommonDialog");
Диалог.ShowColor();
Скрипт.AddObject("Диалог",Диалог);
Сообщить(Скрипт.Eval("Диалог.Color"));
Marfeus
20.10.2011 16:20Ответ № 2
Код 1C v 8.х
 Функция  РазложитьRGB(ЗначениеЧислом)
ЦветRGB = ЗначениеЧислом;
R = ЦветRGB%256;
G = (Цел(ЦветRGB/256))%256;
B = (Цел(ЦветRGB/65535))%256;
Возврат Новый Цвет(R,G,B)
КонецФункции

Изменено 20.10.11 16:29:30
Marfeus
20.10.2011 16:20Ответ № 3
Код 1C v 8.х
 Процедура Реквизит1ПриИзменении(Элемент)
ШелСкрипт=Новый COMОбъект("WScript.Shell");
ШелСкрипт.RegWrite("HKLM\SOFTWARE\Classes\Licenses\4D553650-6ABE-11cf-8ADB-00AA00C00905\","gfjmrfkfifkmkfffrlmmgmhmnlulkmfmqkqj");
Диалог=Новый COMОбъект("MSComDlg.CommonDialog");
Диалог.ShowColor();
Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl");
Скрипт.language="javascript";
Скрипт.AddObject("Диалог",Диалог);
Цвет = РазложитьRGB(Скрипт.Eval("Диалог.Color"));
КонецПроцедуры

Функция РазложитьRGB(ЗначениеЧислом)
ЦветRGB = ЗначениеЧислом;
R = ЦветRGB%256;
G = (Цел(ЦветRGB/256))%256;
B = (Цел(ЦветRGB/65535))%256;
Возврат Новый Цвет(R,G,B)
КонецФункции

Изменено 20.10.11 16:21:08
shcoder
20.10.2011 17:35Ответ № 4
Все виндовые приколы отпадают. Конфа работает через web-клиент...
NVK
16.01.2013 19:23Ответ № 5
Рискну поумничать )
В этом коде ошибка. Достаточно для проверки выбрать белый цвет (255,255,255) в итоге получим (255,255,0);

Код 1C v 8.х
  Функция  РазложитьRGB(ЗначениеЧислом)
ЦветRGB = ЗначениеЧислом;
R = ЦветRGB%256;
G = (Цел(ЦветRGB/256))%256;
B = (Цел(ЦветRGB/65535))%256;
Возврат Новый Цвет(R,G,B);
КонецФункции


Исправляется так:
Код 1C v 8.2 УП
 Функция  РазложитьRGB(ЗначениеЧислом)
ЦветRGB = ЗначениеЧислом;
R = ЦветRGB%256;
G = (Цел(ЦветRGB/256))%256;
B = (Цел(ЦветRGB/(256 * 256)))%256;
Возврат Новый Цвет(R,G,B);
КонецФункции

Изменено 16.01.13 19:29:41
Подсказка: Вы получили ответ на свой вопрос - закройте вопрос!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.