| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Gif анимация в отдельном окне. |
| Автор: кмс 27.10.2014, 16:19 | ||
| Здравствуйте. Есть основная форма, в которой в основном потоке бывает частые подвисания(когда что то усердно делает Решил создать вторую форму на которой просто gif картинка которая как бы отображает что программа работает и нечего беспокоится.
Но проблема в том что когда основная форма подвисает, то и анимация на второй тоже. Можно как нибудь от этого избавиться? |
| Автор: Poseidon 27.10.2014, 20:40 |
| Можно. Использовать для расчетов (или что там программа усердно делает?) отдельный поток, а в основном потоке крутить анимацию. |
| Автор: кмс 27.10.2014, 21:43 |
| Там тогда почти весь код придется в потоки сувать, ради одной анимашки не очень охота все переделывать. Ладно, обойдусь без нее |
| Автор: Poseidon 27.10.2014, 22:55 |
| Наврятли весь код так все грузит. Очень вероятно что все сведется к какому-то циклу или загрузке из сети. |
| Автор: Illusion Dolphin 28.10.2014, 20:05 | ||
Да. Можно создать форму в отдельном потоке. При этом надо использовать WinAPI а не VCL. |
| Автор: кмс 31.10.2014, 10:08 | ||||||||
| Промучился я эти дни с этой анимацией, так и не вышло У меня софт работает с ком портом, сперва пишет в порт, потом принимает данные и так может быть по многу раз. Ожидание данных может достигать до 10 сек. Решил отказаться от компонента для работы с портом(http://sourceforge.net/projects/comport/), нашел кучу примеров и даже как читать из порта в отдельном потоке. Вроде все норм, пишет в порт и даже читает в потоке, но как передать считанные данные в другой поток не пойму. В найденном примере это делается так:
Но мне нужно передать в другой поток, по этому попробовал так
Принимаю в другом потоке также как и в примере.
Не получается Так же пытался через GetMessage и PeekMessage, сообщений приходит много, но не то что нужно. |
| Автор: CynicRus 31.10.2014, 11:52 | ||
| PostThreadMessage - спасёт отца русской демократии-) Ну а ловить - как то так:
|
| Автор: кмс 31.10.2014, 14:25 |
| CynicRus, спасибо, заработало Я в принципе там все и делал, единственно не знал что вызывать "ловителя" нужно обязательно их Execute. |
| Автор: CynicRus 31.10.2014, 22:01 | ||
Да не за что-) А как же иначе, если код потока отрабатывает только в методе execute? |