Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 6 ОтправитьПечать
Очень популярная тема (более 25 ответов) Цвет 1С (число прочтений - 34175 )
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 записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 6
ОтправитьПечать