![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Имплонтация мультимедийного таймера в свой компонент [D6, WinXP]
Jimmy © (2007-09-19 21:00:00)Не подскажите, как имплонтировать мультимедийный таймер в свой компонент? Заранее спасибо.
clickmaker (2007-09-20 11:57:00) [21]
> и чем не устраивает обычный
медленно бежит, наверно )
Сергей М. (2007-09-20 11:57:00) [22]
> У обычного таймера минимальная задержка в 55 мсек. А мне
> нужно меньше
Неужели для анимации строки 18 кадров в секунду недостаточно ?)
Сергей М. (2007-09-20 11:55:00) [23]Ты уж определись наконец, какойкомпонент ты разрабатываешь - то ли компонент-"бегущую строку", то ли компонент-таймер.
А заодно задумайся, за каким лешим тебе понадобился именно мультимедийныйтаймер и чем не устраивает обычный.
Инс (2007-09-20 11:54:00) [24]
> Я делаю бегущую строку.
Да, тут конечно юзер-таймером никак не отделаешься :))) Код показывай!
Jimmy (2007-09-20 11:51:00) [25]В RxGifAnimator например ведь можно сделать анимацию в DesignTime. Я делаю бегущую строку. Было бы неплохо чтобы она бежала и в DesingTime?
Anatoly Podgoretsky (2007-09-20 11:42:00) [26]> Jimmy (20.09.2007 11:05:12) [12]
Там где происходит ошибка.
В DesignTime пользоваться таймером не надо.
Сергей М. (2007-09-20 11:34:00) [27]
> Где вставить эту проверку
В той процедуре, где ты пытаешься запустить таймер.
> как все же пользоваться таймером в DesignTime?
Зачем тебе нужен работающий таймер в дизайн-тайм ? Поясни ..
Jimmy (2007-09-20 11:05:00) [28]Где вставить эту проверку и как все же пользоваться таймером в DesignTime?
Сергей М. (2007-09-20 11:01:00) [29]if csDesigning in ComponentState then
Jimmy (2007-09-20 10:52:00) [30]Я - новичок. Не подскажите, как сделать эту проверку?
Инс (2007-09-20 10:46:00) [31]
> Jimmy (20.09.07 10:43) [8]
Скажу. Потому что вы пытаетесь вызвать в DesignTime обработчик события OnTimer. Не делаете проверку, мы сейчас в дизайн-тайм или ран-тайм. Угадал? Плюс, уверен, вы не учли то, что я сказал насчет потоков, нет никакой синхронизации.
Jimmy (2007-09-20 10:43:00) [32]Спасибо за советы! Но вот появилась еще одна проблемка. Когда я включаю имплантированный таймер во время работы программы - все работает, когда же это делаю на этапе разработки в инспекторе объектов, появляется ошибка. Почему это может быть? Или без кода не скажешь?
Инс (2007-09-20 10:36:00) [33]
> Врешь и не краснеешь.
Любой объект-таймер (юзер-таймер, мультимедиа-таймер, ожидаемый таймер) работает через единственный системный таймер, который генерирует аппаратные прерывания на системах NT с частотой 10 мс. По этому прерыванию управление получает планировщик, который выполняет все необходимые действия, связанные с планированием потоков, которые также включают в себя обработку объектов-таймеров. Это разрешение в 10 мс можно изменить с помощью timeBeginPeriod, однако я не рекомендовал бы это делать, так как это скажется на всей системе, в частности, изменится величина кванта, выделяемая потокам, что может отрицательно сказаться на производительности системы.
Сергей М. (2007-09-20 08:14:00) [34]
> как имплонтировать мультимедийный таймер в свой компонент?
Примерно так как и обычный таймер "импл Антирован" в компонент TTimer.
Исходники компонента доступны.
homm (2007-09-20 07:19:00) [35]> [3] Инс © (19.09.07 23:42)
> А минимальная задержка на платформе NT на нем 10 мс
Это у кого, у мультимедиа? Врешь и не краснеешь.
Инс (2007-09-20 00:43:00) [36]
> У обычного таймера минимальная задержка в 55 мсек. А мне
> нужно меньше.
Кстати, у USER-таймера на NT тоже 10 мс. Это на 9x 55
Инс (2007-09-19 23:42:00) [37]
> [2] Jimmy (19.09.07 21:44)
А у мультимедийного таймера масса ограничений, в частности, коллбэк выполняется в дополнительном потоке, со всеми вытекающими, а еще можно в MSDN заглянуть, там написано, что в этом коллбэке можно вызывать. А минимальная задержка на платформе NT на нем 10 мс, вам от этого легче?
Jimmy (2007-09-19 21:44:00) [38]У обычного таймера минимальная задержка в 55 мсек. А мне нужно меньше.
Efir (2007-09-19 21:35:00) [39]А тебе зачем. Если с этой задачей может справиться TTimer, то лучше использовать его.