Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Цвет 1С (число прочтений - 34188 )
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Цвет 1С
14. Января 2013 :: 13:34
Печать  
Выделил в отдельную тему пожелание, описанное здесь: http://www.1cpp.ru/forum/YaBB.pl?num=1206671269/35#35

Задать цвет для формы целиком - с тулбарами, реквизитами и пр.

Можно и для всего приложения целиком, если при этом останется возможность изменять цвет формы, хотя бы методом Formex.

  

ZamenaCveta1_001.jpg ( 35 KB | Загрузки )
ZamenaCveta1_001.jpg

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #1 - 22. Января 2013 :: 13:56
Печать  
Пока получается вот в таком ключе.
  

Clipboard01_014.jpg ( 601 KB | Загрузки )
Clipboard01_014.jpg
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #2 - 23. Января 2013 :: 05:03
Печать  
Круто, И когда увидим это детище ?
И.. каждый атрибут в отдельности можно красить, или только все сразу ?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #3 - 23. Января 2013 :: 06:48
Печать  
Eprst писал(а) 23. Января 2013 :: 05:03:
Круто, И когда увидим это детище ?
И.. каждый атрибут в отдельности можно красить, или только все сразу ?


Думаю, что в какое-то ближайшее разумное время можно подготовить релиз.

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

На данный момент все сделано для 1С-а в целом: перехватываются 3 функции, 2 из которых являются процедурами для классов окон 1С (AfxWndProcBase из MFC42.DLL и еще одна из BR32.DLL). Такой подход хорош тем, что перехватил один раз три функции и дальше пользуешься этим для всех форм. Тут есть один нюанс - помимо самих форм, цвет поменяют многие "системные" окна 1С-ки, например "Выбор периода", Серсис и т.д.
Если для каждой формы хочется устанавливать свои правила, то это несколько усложняет процесс, но вроде тоже реально.

Какой подход выбрать?
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Цвет 1С
Ответ #4 - 23. Января 2013 :: 07:10
Печать  
Так понятно ж какой хочется - последний, т.е. для каждой формы .
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #5 - 23. Января 2013 :: 07:23
Печать  
zk96 писал(а) 23. Января 2013 :: 07:10:
Так понятно ж какой хочется - последний, т.е. для каждой формы .


Тогда каждую форму придется скармливать классу.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #6 - 23. Января 2013 :: 07:28
Печать  
Ну и ладно.
Скармливать то при открытии небось надо будет ?
И настройки до атрибутов.. тоже неплохо бы.
Я б на нескольких формах чего-нить "понавыделял" бы красным цветом для особо одаренных товарищей.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #7 - 23. Января 2013 :: 07:42
Печать  
Eprst писал(а) 23. Января 2013 :: 07:28:
Ну и ладно.
Скармливать то при открытии небось надо будет ?
И настройки до атрибутов.. тоже неплохо бы.


В ПослеОткрытия, поскольку окон еще не создано в ПриОткрытии.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #8 - 23. Января 2013 :: 07:51
Печать  
Желательно , конечно, изменять еще цвет "на-ходу" в уже открытой форме.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #9 - 23. Января 2013 :: 08:37
Печать  
Eprst писал(а) 23. Января 2013 :: 07:51:
Желательно , конечно, изменять еще цвет "на-ходу" в уже открытой форме.


Это реально.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #10 - 23. Января 2013 :: 10:13
Печать  
Здорово!
Тогда может сделать так - задать цвет всей 1С в целом, а дальше кто хочет - задаёт цвет отдельным формам/реквизитам?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #11 - 29. Января 2013 :: 12:57
Печать  
Выкладываю версию для дальнейшего обсуждения - куда двигаться дальше.

В составе класс и тестовая обработка.
  

test_001.ZIP ( 9 KB | Загрузки )
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #12 - 29. Января 2013 :: 13:37
Печать  
Невозможно создание объекта контейнером ActiveX: 'DynamicWrapperX'
Ошибка выполнения Microsoft VBScript

DWX.WndProc::УстановитьФорму(НеизвестныйОбъект Форма=) : Ошибка выполнения Microsoft VBScript: Требуется объект: 'oServ'
ScrptCtrl.Run("setForm", рФорма.Дескриптор);
{...\DWX.WndProc.ert(515) }

теперь другие

DWX.WndProc::УстановитьФорму(НеизвестныйОбъект Форма=) : Ошибка выполнения Microsoft VBScript: Несоответствие типа: 'Wrap.HeapFree'
ScrptCtrl.Run("setForm", рФорма.Дескриптор);
{\DWX.WndProc.ert(515) }

wndProc.УстановитьФорму(Форма);
{F:\BASE\ТОРГОВЛЯ\CLASSES\ЦВЕТАТРИБУТОВ\TEST.ERT(25)}: DWX.WndProc::УстановитьФорму(НеизвестныйОбъект Форма=) : Ошибка выполнения Microsoft VBScript: Несоответствие типа: 'Wrap.HeapFree'
ScrptCtrl.Run("setForm", рФорма.Дескриптор);
{DWX.WndProc.ert(515) }


Это, мот кинешь свою dynwrapx.dll ?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #13 - 29. Января 2013 :: 14:08
Печать  
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #14 - 29. Января 2013 :: 14:48
Печать  
У меня заработало. Но цвет панелей закрашивается не полностью - только сами кнопки. Главное меню осталось серым.
  

ColorTest1.jpg ( 32 KB | Загрузки )
ColorTest1.jpg

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #15 - 29. Января 2013 :: 14:58
Печать  
Только что-то не нашел, как устанавливается цвет фона формы.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #16 - 29. Января 2013 :: 15:32
Печать  
Вот как отрисовывается глобальное меню:
  

ColorTest2_Menu.jpg ( 34 KB | Загрузки )
ColorTest2_Menu.jpg

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #17 - 29. Января 2013 :: 15:39
Печать  
Как я понимаю, класс DWX.wndProc должен создаваться для каждой формы отдельно. Правильно? Т.е. нельзя создать один раз глобальный класс и передавать в него Форму? Я попробовал через глобальный класс - форма создалась. Но после третьего открытия формы 1С улетает в космос.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #18 - 29. Января 2013 :: 16:00
Печать  
И еще:

Переменная класса должна быть переменной модуля. Это я уже понял.
Но вот поигрался с местоположением вызовов методов класса и что выяснил, что последовательность вызова важна:

метод УстановитьФорму() нужно вызывать после стандартного вызова Форма.ИспользоватьЗакладки(1) и после создания формы, т.е. так:

Код
Выбрать все
Перем кл;
....
кл=СоздатьОбъект("DWX.wndProc");
Форма.ИспользоватьЗакладки(1);
....
Процедура ПослеОткрытия()
    кл.УстановитьФорму(Форма);
КонецПроцедуры 



Иначе атрибуты и закладки неправильно закрашиваются.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #19 - 29. Января 2013 :: 16:10
Печать  
И еще вопрос: где в классе устанавливается цвет активной/неактивной кнопки тулбара?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #20 - 30. Января 2013 :: 05:21
Печать  
chessman писал(а) 29. Января 2013 :: 14:08:


Кинь сюда, я там не зарегистрирован
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #21 - 30. Января 2013 :: 06:01
Печать  
Eprst писал(а) 30. Января 2013 :: 05:21:
chessman писал(а) 29. Января 2013 :: 14:08:


Кинь сюда, я там не зарегистрирован


А там регистрация нужна для скачки?  Ужас

  

dynwrapx.zip ( 6 KB | Загрузки )
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #22 - 30. Января 2013 :: 06:06
Печать  
Я тут подумал, что класс наверное нужно будет поделить на части: раскраску атрибутов формы оставить в одном классе, а раскраску самой формы отнести в другой класс. Нужно подумать, как это лучше сделать.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #23 - 30. Января 2013 :: 06:47
Печать  
Ага
  

123_006.JPG ( 27 KB | Загрузки )
123_006.JPG
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #24 - 30. Января 2013 :: 06:49
Печать  
Как -то он выборочно красит
+в Тулбаре остается незакрашеной правая часть.
  

123_007.JPG ( 41 KB | Загрузки )
123_007.JPG
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #25 - 30. Января 2013 :: 07:06
Печать  
Eprst писал(а) 30. Января 2013 :: 06:49:
Как -то он выборочно красит
+в Тулбаре остается незакрашеной правая часть.


А ты же не натравливал эту форму на класс, вот поэтому так и рисуется.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #26 - 30. Января 2013 :: 07:11
Печать  
Всмысле ?
Это я просто твою обработку запустил.

ЗЫ: и не нашел, где там у тебя задается цвет этот (не для конкретной формы, а для всей "1с-ины"
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #27 - 30. Января 2013 :: 07:22
Печать  
Как бэ.. в классе не хватает метода

УстановитьЦветОдинЭсииПоУмолчаниюДляВсего(<Цвет>)

Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #28 - 30. Января 2013 :: 07:55
Печать  
Eprst писал(а) 30. Января 2013 :: 07:11:
Всмысле ?
Это я просто твою обработку запустил.

ЗЫ: и не нашел, где там у тебя задается цвет этот (не для конкретной формы, а для всей "1с-ины"


Попробую объяснить как на данный момент все это работает.

Начну с тулбара. Это панельки с кнопками у каждой формы + плавающие панельки самой 1С. За фон в этих панелях отвечает некая константа (в скрипте явно указан ее адрес, посколько по другому до нее не добраться). Прежде чем нарисовать саму кнопку 1С выполняет заливку фона панели.
После 1С рисует само изображение на кнопке. Для этого вызывается системная функция GetSysColor (см. MSDN) (я ее перехватываю) с параметром COLOR_BTNFACE. Это цвет "подложки" кнопки. После этого 1С вызывает ф-ю ReMapBitmap2 ( тоже перехватывается) - в ней формируется изображение для нЕактивной кнопки.
Если сравнить, как отрисованы кнопки в Плавающих панелях и в формах, то видно, что в формах они отрисованы "правильно", а в Плавающих "криво". Это происходит потому, что изображения для Плавающих панелей формируются 1 раз на этапе загрузки 1С. Для исправления ситуации я вижу 2 пути - либо разрюхать, где хранятся эти битмапы и заново их переформировать, либо внести изменения во frame.dll - адреса я знаю (думаю, что этим никто не будет заниматься).
Про то, как рисуется меню можно сказать практически тоже самое.   

Вообще хочу спросить, нужны такие подробности, имеет смысл  продолжать?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #29 - 30. Января 2013 :: 07:58
Печать  
А фон самой формы ?
Я ж у других объектов их "не меняю"
а сейчас - меняется всё, вся 1с-ина. а не только нужная форма.

ЗЫ: после закрытия обработки, все тулбары остаются "искореженными" - цвет не возвращается в "цвет формы" по-умолчанию.

ЗЫЫЫ: Можно ли сделать отдельный класс, где можно только цвет контролов на конкретной форме красить ? Мне цвет всего остального не интересен, только контролы.
Спсб.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #30 - 30. Января 2013 :: 07:59
Печать  
Eprst писал(а) 30. Января 2013 :: 07:22:
Как бэ.. в классе не хватает метода

УстановитьЦветОдинЭсииПоУмолчаниюДляВсего(<Цвет>)

Улыбка


Можешь поэкспериментировать с функцией GetSysColor, особенно с параметром COLOR_WINDOW Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #31 - 30. Января 2013 :: 08:02
Печать  
Eprst писал(а) 30. Января 2013 :: 07:58:
А фон самой формы ?
Я ж у других объектов их "не меняю"
а сейчас - меняется всё, вся 1с-ина. а не только нужная форма.


Ну, дело в том, что 1С использует GetSysColor не только для получения цвета кнопок.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #32 - 30. Января 2013 :: 08:15
Печать  
Да, с COLOR_WINDOW интересно - раскрашивается ТЗ на форме и окно сообщений в цвет формы. Улыбка
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #33 - 30. Января 2013 :: 08:17
Печать  
Не совсем понял - отделить раскрашивание всей 1С (главное меню, основное окно, тулбары) от раскрашивания отдельной формы не получается?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #34 - 30. Января 2013 :: 08:23
Печать  
alyuev писал(а) 30. Января 2013 :: 08:17:
Не совсем понял - отделить раскрашивание всей 1С (главное меню, основное окно, тулбары) от раскрашивания отдельной формы не получается?


Что-то можно отделить конечно, но вот например, закладки рисуются цветом, возвращаемым GetSysColor.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #35 - 30. Января 2013 :: 08:25
Печать  
Спасибо. Важное замечание.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #36 - 30. Января 2013 :: 08:26
Печать  
С гетсисколор поиграюсь, а сами контролы по-отдельности не получится ?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #37 - 30. Января 2013 :: 08:40
Печать  
Eprst писал(а) 30. Января 2013 :: 08:26:
С гетсисколор поиграюсь, а сами контролы по-отдельности не получится ?


Можно. Вот я и думаю, может отделить этот функционал. Он может работать отдельно от остальных "раскрасок".
С цветом контролов вот какой вопрос - те, контролы у которых НЕ простой тип ("Справочник/Документ" и пр), даже если они Disable, всегдя отрисовываются одним цветом. По хорошему - это неудобно, поскольку остальные контролы меняют цвет.
Вот для остальных, в процедуру окна прилетают события и можно автоматом менять цвет.
Для контролов с НЕпростым типом нужно будет устанавливать цвет руками(если это вообще говоря нужно).
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #38 - 30. Января 2013 :: 08:56
Печать  
Нужно!
Улыбка

Т.е, если я устанавливаю контролу цвет, на него видимость/доступность не "действует", ну т.е цвет не меняется ?
И пофик, это пусть разработчик "заботится" об цвете не активных контролов при установке "доступности"

Хотя, если будут "автоматом" с родным цветом, при не доступности - конечно, лучше было бы.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #39 - 30. Января 2013 :: 09:48
Печать  
Eprst писал(а) 30. Января 2013 :: 08:56:
Нужно!
Улыбка

Т.е, если я устанавливаю контролу цвет, на него видимость/доступность не "действует", ну т.е цвет не меняется ?
И пофик, это пусть разработчик "заботится" об цвете не активных контролов при установке "доступности"

Хотя, если будут "автоматом" с родным цветом, при не доступности - конечно, лучше было бы.


На счет Видимости я ничего не говорил Улыбка

Я хотел донести вот какую мысль...попробую переформулировать.
Как это сейчас выглядит в 1С:
См. рек 1 и 2.Оба имеют НЕпростой тип.

1- недоступен, 2-доступен. Цвет одинаков - сходу не поймешь, доступен или нет реквизит.

См. рек 3 и 4. Простой тип (число, строка, дата)
По разнице цветов видно, какой доступен, какой нет.

Если установить перехват на процедуры окон этой формы, то, когда мы программно устанавливаем доступность для рек. 1 и 2, в сами процедуры окон не прилетают сообщения как-то сообщающие об изменении доступности.
И наоборот, для рек.3 и 4,  прилетают соответствующие сообщения. Поэтому в последнем случае, можно автоматом устанавливать цвет для Доступных и Недоступных реквизитов такого типа.

Поэтому, если есть желание менять цвета для НЕпростых реквизитов, то это нужно  делать руками.
  

Clipboard03_003.jpg ( 31 KB | Загрузки )
Clipboard03_003.jpg
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #40 - 30. Января 2013 :: 10:01
Печать  
Ну, руками, так руками, это не проблема (при установки Доступность в 0 поменять и цвет).

Вот при Форма.ТолькоПросмотр(1) тоже события не "летят" ? И придётся усю форму оббегать ?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #41 - 30. Января 2013 :: 10:10
Печать  
Eprst писал(а) 30. Января 2013 :: 10:01:
Ну, руками, так руками, это не проблема (при установки Доступность в 0 поменять и цвет).

Вот при Форма.ТолькоПросмотр(1) тоже события не "летят" ? И придётся усю форму оббегать ?


Для простых типов прилетают.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #42 - 30. Января 2013 :: 10:16
Печать  
Есть конечно еще один вариант, если передавть в скрипт саму форму, то можно добраться до состояния контролов, как это  возвращает метод Доступность(). Имеет смысл смотреть в этом направлении?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #43 - 30. Января 2013 :: 10:18
Печать  
chessman писал(а) 30. Января 2013 :: 10:16:
Есть конечно еще один вариант, если передавть в скрипт саму форму, то можно добраться до состояния контролов, как это  возвращает метод Доступность(). Имеет смысл смотреть в этом направлении?


Нужно!
Лучше уж иметь возможность красить контролы в конкретной форме, но правильно!
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #44 - 30. Января 2013 :: 10:43
Печать  
То, что "сложный" реквизит (агрегированный тип) не изменяет цвет в режиме Недоступности - это, наверное, 1С-овская недоделка. А если ты сделаешь так, что и их цвет Недоступности можно будет менять - ну, вообще будет красота.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #45 - 30. Января 2013 :: 10:53
Печать  
alyuev писал(а) 30. Января 2013 :: 10:43:
То, что "сложный" реквизит (агрегированный тип) не изменяет цвет в режиме Недоступности - это, наверное, 1С-овская недоделка. А если ты сделаешь так, что и их цвет Недоступности можно будет менять - ну, вообще будет красота.


Давай тогда я доделаю раскраску реквизитов, а потом продолжим с раскраской формы.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #46 - 30. Января 2013 :: 11:55
Печать  
chessman писал(а) 30. Января 2013 :: 10:53:
Давай тогда я доделаю раскраску реквизитов, а потом продолжим с раскраской формы.


будет круто, ждём!


  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #47 - 01. Февраля 2013 :: 10:59
Печать  
Выкладываю тестовый вариант класса для раскраски атрибутов формы. В архиве вспомогательный класс для исправления на лету blang.dll (без него не взлетит).
Сделал правильную раскраску для реквизитов, в зависимости от их состояния (доступен/недоступен).

Вызов метода УстановитьФорму нужно делать после открытия формы.
Предполагается, что каждый элемент класса будет связан с одной формой.

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




  

test_002.ZIP ( 19 KB | Загрузки )
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #48 - 01. Февраля 2013 :: 11:03
Печать  
Картинка должна быть приблизительно такая.
  

Clipboard05_002.jpg ( 56 KB | Загрузки )
Clipboard05_002.jpg
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #49 - 01. Февраля 2013 :: 11:04
Печать  
А примерчик тестовый ?
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #50 - 01. Февраля 2013 :: 11:15
Печать  
Eprst писал(а) 01. Февраля 2013 :: 11:04:
А примерчик тестовый ?

  

test2.zip ( 2 KB | Загрузки )
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #51 - 01. Февраля 2013 :: 11:56
Печать  
А как поправить в классе, чтоб по-умолчанию, все контролы были с "родным" 1с-овским цветом ?
А не как сейчас - все серенькие с красным шрифтом при Установитьфыорму()

И заодно, цвет шрифта как задается ? это нашел.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #52 - 01. Февраля 2013 :: 12:34
Печать  
Eprst писал(а) 01. Февраля 2013 :: 11:56:
А как поправить в классе, чтоб по-умолчанию, все контролы были с "родным" 1с-овским цветом ?
А не как сейчас - все серенькие с красным шрифтом при Установитьфыорму()

И заодно, цвет шрифта как задается ? это нашел.


Разобрался?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #53 - 01. Февраля 2013 :: 12:39
Печать  
Не, не найду, где цвет по-умолчанию для реквизитов  торчит..
чтоб при открытии формы, после УстановитьФорму цвета не менялись.
А только те, что явно заданы через УстановитьЦветРеквизиту
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #54 - 01. Февраля 2013 :: 12:56
Печать  
Eprst писал(а) 01. Февраля 2013 :: 12:39:
Не, не найду, где цвет по-умолчанию для реквизитов  торчит..
чтоб при открытии формы, после УстановитьФорму цвета не менялись.
А только те, что явно заданы через УстановитьЦветРеквизиту


Код
Выбрать все
cBlue = &hEFE7DE
cDarkBlue = &hD6BA9F
cRed= &hFF
cDarkGrey= &h6D6D6D 

  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #55 - 01. Февраля 2013 :: 13:09
Печать  
И ?
какие должны быть  по -умолчанию ?
С этими - цвета зеленые и голубые Улыбка
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #56 - 01. Февраля 2013 :: 13:36
Печать  
PixCol тебе поможет, я ей пользуюсь  Подмигивание
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #57 - 01. Февраля 2013 :: 13:38
Печать  
У реквизитов агрегатного типа внутренний фон задается методом УстановитьЦветРеквизита(), а цвет внутренней рамочки (стандартный цвет - белый) зависит от общего цвета 1С, который задаётся в COLOR_WINDOW. Правильно? Т.е. тот цвет, от которого зависит и цвет закладок.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #58 - 01. Февраля 2013 :: 14:01
Печать  
alyuev писал(а) 01. Февраля 2013 :: 13:38:
У реквизитов агрегатного типа внутренний фон задается методом УстановитьЦветРеквизита(), а цвет внутренней рамочки (стандартный цвет - белый) зависит от общего цвета 1С, который задаётся в COLOR_WINDOW. Правильно? Т.е. тот цвет, от которого зависит и цвет закладок.


Ну, я не могу так с ходу сказать, но в данном случае это легко можно исправить, посколько мы перехватили процедуру окна, то каким цветом там будет заливка определяется в сообщении WM_ERASEBKGND. Тут я его не обрабатываю, но нам никто не мешает.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #59 - 01. Февраля 2013 :: 14:08
Печать  
Уже сам проверил Улыбка.
Запустил форму, где раскрашиваются только реквизиты (классом Attrib), и затем запустил форму, которая раскрашивается классом WndProc с раскомментированным Case COLOR_WINDOW. И рамка агрегатных реквизитов закрасилась в цвет COLOR_WINDOW (и помимо этого в этот же цвет закрасились окно сообщений и ТЗ на форме)
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #60 - 08. Февраля 2013 :: 09:58
Печать  
Так, а теперь для тех кто в танке, ка это слепить в классе атр ? Чего там добавить, чтоб фон-по умолчанию то был ?
Улыбка
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #61 - 08. Февраля 2013 :: 10:02
Печать  
Это я как раз говорил за фон НЕ по умолчанию. Тот, что серый - надо определить его код.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #62 - 08. Февраля 2013 :: 10:03
Печать  
Eprst писал(а) 08. Февраля 2013 :: 09:58:
Так, а теперь для тех кто в танке, ка это слепить в классе атр ? Чего там добавить, чтоб фон-по умолчанию то был ?
Улыбка


Переведи, не понял  Подмигивание - я уже переключился на "кнопки к тулбару".
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #63 - 08. Февраля 2013 :: 10:34
Печать  
Как в классе DWX.Attrib.ert поправить, чтоб при открытии, все атрибуты (контролы) были с цветом по-умолчанию (по цвету формы) при вызове метода УстановитьФорму()

ЗЫ: сейчас они в "синий" цвет красятся.
ЗЫЫ: определять ручонками "серенький" цвет и задавать ручонками - не катит, ибо на разных версиях винды он свой.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #64 - 08. Февраля 2013 :: 10:51
Печать  
Eprst писал(а) 08. Февраля 2013 :: 10:34:
Как в классе DWX.Attrib.ert поправить, чтоб при открытии, все атрибуты (контролы) были с цветом по-умолчанию (по цвету формы) при вызове метода УстановитьФорму()

ЗЫ: сейчас они в "синий" цвет красятся.
ЗЫЫ: определять ручонками "серенький" цвет и задавать ручонками - не катит, ибо на разных версиях винды он свой.


Понял.
Выложу исправления.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #65 - 18. Февраля 2013 :: 13:21
Печать  
Исправил класс. Цвет фона устанавливается, исходя из системных настроек.
  

DWX_Attrib.zip ( 6 KB | Загрузки )
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #66 - 18. Февраля 2013 :: 13:50
Печать  
Ну круть!
Спасибо.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #67 - 01. Марта 2013 :: 09:34
Печать  
Привет, chessman, получается что-то с цветом формы? Жаль, что свою помощь не могу предложить, уж больно твой полёт высок Улыбка.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #68 - 04. Марта 2013 :: 08:01
Печать  
alyuev писал(а) 01. Марта 2013 :: 09:34:
Привет, chessman, получается что-то с цветом формы? Жаль, что свою помощь не могу предложить, уж больно твой полёт высок Улыбка.


Привет! Буду разбираться дальше. Пока прервался на неотложные дела.
  
Наверх
 
IP записан
 
uncle.ck.ua
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 20. Июня 2013
Re: Цвет 1С
Ответ #69 - 20. Июня 2013 :: 10:41
Печать  
а можно разжевать для малопонятливых, достал один заказчик, не нравится ему унылые цвета 1С, докопался до этой ветки, обрадовался, скачал dynwrapx.dll положил в system32, зарегистрировал, запускаю test.ert b вижу фигу
TEST.ERT(49)}: Неудачная попытка создания объекта (DWX.wndProc)
Windows 7, регистрация dll успешно, где я туплю? Плачущий
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #70 - 20. Июня 2013 :: 10:49
Печать  
Должна быть загружена вк 1cpp и в Defcls.prm прописаны пути к классам
  

______________002.rar ( 24 KB | Загрузки )
Наверх
 
IP записан
 
uncle.ck.ua
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 20. Июня 2013
Re: Цвет 1С
Ответ #71 - 20. Июня 2013 :: 12:12
Печать  
Eprst писал(а) 20. Июня 2013 :: 10:49:
Должна быть загружена вк 1cpp


1С громко падает с ошибкой, пробовал 1cpp-2.0.3.7 и 1cpp-2.5.0.7 ложил  в BIN, в паку базы, пробовал в system 32 b регистрировать regsrv32 - ругается, ошибки в атаче  Озадачен
  

error_1cpp.jpg ( 90 KB | Загрузки )
error_1cpp.jpg
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #72 - 20. Июня 2013 :: 12:25
Печать  
У меня под рукой 77 нет, вечером посмотрю.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Цвет 1С
Ответ #73 - 20. Июня 2013 :: 12:28
Печать  
Либо выложи тут текст класса в zip'е
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #74 - 20. Июня 2013 :: 13:29
Печать  
uncle.ck.ua писал(а) 20. Июня 2013 :: 12:12:
пробовал 1cpp-2.0.3.7 и 1cpp-2.5.0.7


Где вы всё время это старьё берёте ?

На вот, занимайся (регить её не надо сто лет в обед)

http://www.1cpp.ru/forumfiles/Attachments/icpp-3-2-4-1.rar
  
Наверх
 
IP записан
 
uncle.ck.ua
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 20. Июня 2013
Re: Цвет 1С
Ответ #75 - 20. Июня 2013 :: 16:51
Печать  
спасибо, похоже помогло, по крайней мере не вылетает 1Ска

Eprst писал(а) 20. Июня 2013 :: 13:29:
Где вы всё время это старьё берёте ?



(смущенно) ну как бы так вот тут http://www.1cpp.ru/index.php/Download Рекомендованные релизы  черным по белому Ужас
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Цвет 1С
Ответ #76 - 21. Июня 2013 :: 04:16
Печать  
Этой шутке ужо лет 5 наверное..
все обновления - только на форуме, сам сайт никто не обновляет
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #77 - 25. Сентября 2014 :: 11:48
Печать  
Chessman, подскажи пожалуйста. Если STATIC text имеет установленное свойство Прозрачный - его можно не обрабатывать в классе?
Как в классе отловить это свойство? А то такие объекты на форме разукрашиваются принудительно в цвет формы, но в некоторых местах они могут налезать на другие объекты и вид после разукрашивания несколько портится.

Если убрать разукрашивание таких объектов (закомментить строку)
Код
Выбрать все
AfxWndProcBase = oServ.SetCoror(lParam, hDC, 1) 

, то такой реквизит всё равно перестает быть прозрачным и заливается серым фоном.
« Последняя редакция: 25. Сентября 2014 :: 13:43 - alyuev »  

2014-09-25_144338.jpg ( 3 KB | Загрузки )
2014-09-25_144338.jpg

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Цвет 1С
Ответ #78 - 25. Сентября 2014 :: 13:42
Печать  
Кстати, по поводу установки этого свойства (Прозрачность) из 1С уже спрашивал здесь: http://www.1cpp.ru/forum/YaBB.pl?num=1345736013

Ответа пока не прозвучало.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать