| 
| 
 | Вопрос # 5 276/ вопрос открыт / | 
 |  Здравствуйте!У меня есть форма с RxGifAnimator. в него загружена гифка. Если я просто создаю и показываю эту форму - гифка бегает. Если помещаю форму в ДЛЛ и показываю оттуда - гифка стоит. в чем может быть дело?
 
|  |   Вопрос задал: AlexMPEI (статус: 1-ый класс)Вопрос отправлен: 11 мая 2011, 12:13
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 10; последнее сообщение — 11 мая 2011, 14:30; участников в обсуждении: 3. 
|   | Вадим К (статус: Академик), 11 мая 2011, 12:28 [#1]:потому что форма в длл. Галочка "подтверждения прочтения" - вселенское зло. |  
|   | AlexMPEI (статус: 1-ый класс), 11 мая 2011, 12:35 [#2]:эту связь я уже выявил. мне непонятно как влияет то что форма в длл на отображение гифки. |  
|   | min@y™ (статус: Доктор наук), 11 мая 2011, 13:07 [#3]:Похоже, придётся писать письмо турецкому султанусоздателю этого компонента, если не можешь добраться отладчиком до нужного места в коде.Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Вадим К (статус: Академик), 11 мая 2011, 13:20 [#4]:Скорее всего разработчик пошлет. И будет прав.Дело в том, что главная форма не знает о форме в длл. и в этом приложении два экземпляра Application, а они не знают друг о дружке (в приложении может быть только один экземпляр Application). 
 
 Зная, как приблизительно работает этот компонент, я могу предположить такое - он создает дополнительный тред или таймер, который посылает всем формам сообщение "обнови картинку на гифе" (можно было для каждой картинки создать - но это ведь извращение).
 Но как этот тред узнает о списке форм приложения? он возьмет переменную screen (которая тоже должна быть одна на все приложение) и посмотрит список всех форм. А так как никто не рассчитывает, что у нас теперь этих объектов 2, то имеем что имеем.
 
 
 Вывод - похакать то все это можно, но придется очень хорошо разобратся с vcl. Очень хорошо.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 11 мая 2011, 13:33 [#5]:По 2 объекта Application и Screen (а также mouse, printer и т.п.) - это, как раз, не проблема: ссылки на них можно передать из exe в dll и временно присвоить, куда надо. А вот проблема с этим чёртовым компонентом была и у меня, только проявлялась по-другому. Лет эдак 100500 назад я тоже баловался формами в dll. Одна из них - окно "О программе", на которой этот гиф-аниматор крутил картинку-логотип. Но вот незадача - при закрытии этого окна примерно в 30-40% случев спонтанно всё приложение ЧПОК (!) и закрывалось без каких-либо сообщений об ошибках. После такой подставы эксперименты с формами я прекратил. Надеюсь, что навсегда. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | AlexMPEI (статус: 1-ый класс), 11 мая 2011, 13:47 [#6]:самое интересное у меня сначала это все стабильно работало. только пришлось на форму положить таймер который раз в 200 мс делал Application.ProcessMessage; чтобы гиф бегал. потом RxLib начал ругаться на какие-то лицензии, не давал мне скомпилироваться с рантайм пакеджами, выдавая жуткие ошибки. В итоге сегодня я нашел другой RxLib 2.75 (до этого была версия 4....). С ним все ок, но вот эта проблема с небегающим гифом. |  
|   | Вадим К (статус: Академик), 11 мая 2011, 14:00 [#7]:А решается то все очень просто   Галочка "подтверждения прочтения" - вселенское зло. |  
|   | min@y™ (статус: Доктор наук), 11 мая 2011, 14:00 [#8]:Ну попробуй скачать другой компонент для прокручивания анимированных гифов. Их, кроме TRxGifAnimator'a в енторнете полно. Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | AlexMPEI (статус: 1-ый класс), 11 мая 2011, 14:23 [#9]:Вадим К, из моего предыдущего сообщения не следует что RxLib отказался работать после добавления таймера. После добавления таймера как раз все отлично работало долгое время пока в один прекрасный день что-то внутри RxLib не переклинило и он не стал просить какие-то лицензии. |  
|   | Вадим К (статус: Академик), 11 мая 2011, 14:30 [#10]:Странно, что RxLib вообще просит какие то лицензии - это OpenSource проект. Сорцы свободны, их можно посмотреть и модифицировать. Да и нет версии 4 (последняя 2.77). Исходя из этого делаю вывод, что "лицензии" запрашивались кем то другим
  Почему начало работать с таймером? потому что Вы вручную вызываете обработку сообщений. А далеко не факт, что она будет работать правильно.
 
 Еще раз напишу - код vcl построен так, что он не рассчитывает, что у Вас есть длл с формой! Поэтому то работает, то не работает.
 
 Но если нужны формы в "длл", то используем bpl и все будет работать. (правда до тех пор, пока версия компилятора не поменяется).
 Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |