Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Отрисовка ActiveX (число прочтений - 14882 )
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Отрисовка ActiveX
05. Июля 2007 :: 09:21
Печать  
Подниму еще раз тему ошибки отрисовки АктивИкс после рефакторинга класса АктивИкс, т.к. это крепко отравляет мне жизнь.
Напомню суть. После добавления возможности цеплять активикс не только на Текст, но и на кнопку, стало проявляться такое. При открытии формы с активиксом модально, активикс отрисовывается только после наведения на него мыши.
В некоторых формах это бывает и при немодальном открытии.
Это лечится Видимость(0)/Видимость(1) для атрибута, содержащего активикс, но это же нехорошо.

Для облегчения тестирования накидал маленький активикс. Прошу потестить, кто может.
В архиве обработка и тестовый активикс.

Перед запуском обработки нужно зарегистрировать SemenBtn.ocx.
Также должны быть загружены 1с++ v.2.5.x.x и FormEx.

Проверка состоит в следующем.
1. Запустить обработку немодально - активикс виден сразу.
1. Запустить обработку модально - активикс виден только после наведения мыши.

Надеюсь, это поможет разработчикам отловить ошибку.
  

axtest_01.zip ( 9 KB | Загрузки )
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отрисовка ActiveX
Ответ #1 - 06. Июля 2007 :: 12:02
Печать  
По моей просьбе уважаемый АЛьФ протестировал вышеописанную неприятность.

Выяснилось, что если убрать стиль окна-контейнера для активикса WS_CLIPCHILDREN,
то все работает норально.
Т.е. заменить DWORD dwStyle = WS_CHILD | WS_CLIPCHILDREN | (pCont->m_bIsTab ? WS_TABSTOP : 0);
на
DWORD dwStyle = WS_CHILD | (pCont->m_bIsTab ? WS_TABSTOP : 0);

Большая просьба к разработчикам сделать изменение и выложить на тестирование.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #2 - 08. Июля 2007 :: 19:03
Печать  
Присоединюсь к просьбе поправить этот баг!
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #3 - 08. Июля 2007 :: 19:07
Печать  
Кроме того, есть еще «хотелочка»! Очень хочется в классе Активикса иметь возможность получать атрибут на основании которого он создан.
Наверное проще всего было бы в методе УстановитьАтрибут::Активикс, если активикс уже создан и передаются пустые параметры — возвращать Атрибут и Форму. Или сделать аналогичный метод.

Для чего это надо:
Предположим активикс имеет родной цвет фона от Лагерфельда или Дольче Габаны Улыбка
Хотелось бы сделать его таким, как у родного элемента управления (кнопки или текста). Для этого получаем атрибут формы на основании которого он сделан, и используя Альфовский ЦветФона::АтрибутФормы получаем необходимый фон.
Это позволит отказаться от использования следующей схемы:
Код
Выбрать все
Wrapper = CreateObject("DynamicWrapper");
Wrapper.Register ("USER32.DLL", "GetSysColor", "I=l", "f=s", "R=l");
Сам().Объект.BackColor = Wrapper.GetSysColor(4);
Сам().Объект.HighlightColor = Wrapper.GetSysColor(13);
 

  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #4 - 08. Июля 2007 :: 19:25
Печать  
vip писал(а) 06. Июля 2007 :: 12:02:
Выяснилось, что если убрать стиль окна-контейнера для активикса WS_CLIPCHILDREN,
то все работает норально.


Пока можно обойти так:
После создания активикса, выполняем следующий код
Код
Выбрать все
Общие = СоздатьОбъект("Артур.Общие");
Стиль = Общие.Из_10_В_Любую(Реквизит.Стиль, 16);
Стиль = Лев(Стиль, 1) + "0" + Сред(Стиль, 3);
Реквизит.Стиль = Общие.Из_Любой_В_10(Стиль, 16); 



Проверено, работает! Улыбка

P.S. За исключением майкрософтоских тулбара и т.д. Печаль
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отрисовка ActiveX
Ответ #5 - 11. Июля 2007 :: 04:54
Печать  
Arta писал(а) 08. Июля 2007 :: 19:03:
Присоединюсь к просьбе поправить этот баг!

Отправил тебе потестить исправленный вариант.
Потести и скажи свое веское слово. Улыбка
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #6 - 16. Июля 2007 :: 23:27
Печать  
vip писал(а) 11. Июля 2007 :: 04:54:
Отправил тебе потестить исправленный вариант.
Потести и скажи свое веское слово. Улыбка


Проблема исчезла везде, за исключением микрософтовских тулбаров. В остальном никаких отклонений нет!
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отрисовка ActiveX
Ответ #7 - 17. Июля 2007 :: 02:37
Печать  
Arta писал(а) 16. Июля 2007 :: 23:27:
vip писал(а) 11. Июля 2007 :: 04:54:
Отправил тебе потестить исправленный вариант.
Потести и скажи свое веское слово. Улыбка


Проблема исчезла везде, за исключением микрософтовских тулбаров. В остальном никаких отклонений нет!

Ну тогда просим разработчиков сделать изменения в боевой сборке Улыбка
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #8 - 17. Июля 2007 :: 17:56
Печать  
done
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Отрисовка ActiveX
Ответ #9 - 17. Июля 2007 :: 19:13
Печать  
steban писал(а) 17. Июля 2007 :: 17:56:
done

Сенькс Улыбка
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #10 - 11. Сентября 2007 :: 16:06
Печать  
Arta писал(а) 16. Июля 2007 :: 23:27:
Проблема исчезла везде, за исключением микрософтовских тулбаров. В остальном никаких отклонений нет!



Возвращаясь к теме. Проблема окончательно исчезла после того как Артур что-то нахимичил с формексом, назвав это рефакторингом. Что сделал - не сознается  Смех
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #11 - 11. Сентября 2007 :: 16:08
Печать  
1) Обратите внимание: слово "нахимичил" употреблено в положительном смысле Улыбка
2) Я же говорю, что общая стабильность и скорость системы 1С после оптимизации ФормЕкс ИМХО сильно увеличена Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #12 - 15. Декабря 2008 :: 16:03
Печать  
Напоролся на проблему с отрисовкой тулбара "MSComctlLib.Toolbar" в модальном режиме, подскажите, эту проблему можно как-то решить?
видимость 0/1 атрибута не помогает Печаль

Formex.dll 2.0.5.93
1cpp.dll 3.0.1.20
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #13 - 15. Декабря 2008 :: 18:58
Печать  
CaBaT писал(а) 15. Декабря 2008 :: 16:03:
Напоролся на проблему с отрисовкой тулбара "MSComctlLib.Toolbar" в модальном режиме, подскажите, эту проблему можно как-то решить?
видимость 0/1 атрибута не помогает Печаль

Formex.dll 2.0.5.93
1cpp.dll 3.0.1.20


Есть такая беда.
В общем напарывался если создавать тулбар в "ПослеСозданияФормы", переписал в "ПослеОткрытия" и все вроде в норме, но раз-на-раз не приходится и иногда "попадается".
В общем поддерживаю и говорю что да "ГЛЮК ЕСТЬ"  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Отрисовка ActiveX
Ответ #14 - 16. Декабря 2008 :: 03:53
Печать  
Тест? Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать