|
Вопрос # 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 и все будет работать. (правда до тех пор, пока версия компилятора не поменяется).
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|