Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.06.2015, 15:49   #1
Zis67
Пользователь
 
Аватар для Zis67
 
Регистрация: 06.04.2011
Сообщений: 80
По умолчанию Таймер "замирает" при смене формы

Есть две формы(обе в auto-create, main первая).Первая, вобщем, пуста, на второй таймер. После запуска таймер должен воспроизводить звуковой файл. Проблема в том что если мы после запуска перейдём на вторую форму (showmodal) а потом закроем её, то пока мы на неё не вернёмся таймер будет "висеть".
Прочитал тут в одной теме что дело в отсутствии синхронизации, но когда создал отдельный проект для того чтобы посмотреть как эту синхронизацию запилить, оказалось что там всё и так прекрасно работает(тоесть после того как мы закрыли вторую форму таймер продолжает воспроизводить файл).
В чём может быть проблема?

Последний раз редактировалось Zis67; 12.06.2015 в 16:00.
Zis67 вне форума Ответить с цитированием
Старый 12.06.2015, 16:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
showmodal
Правильно. Модалка блокирует поток, в котором обрабатывается таймер. Он не будет так работать. Тебе придется либо отказываться от модальности, либо заменять его на Thread.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.06.2015, 17:18   #3
Zis67
Пользователь
 
Аватар для Zis67
 
Регистрация: 06.04.2011
Сообщений: 80
По умолчанию

Спасибо, дело действительно в модальности. Но почему-то в отдельном проекте после того-же showmodal таймер продолжает работать.
Zis67 вне форума Ответить с цитированием
Старый 12.06.2015, 17:34   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну кто ж кроме тебя знает как и что ты там написал? ))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2015, 07:44   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,759
По умолчанию

Да вроде модальность не тормозит таймер.
FaTaL вне форума Ответить с цитированием
Старый 13.06.2015, 09:10   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Модальная форма должна ставить главный поток на паузу, а соответственно и обработка таймера не должна выполняться. Если я ошибаюсь, то значит что-то в ИТ индустрии пошло не так.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.06.2015, 15:53   #7
Antony41
Пользователь
 
Аватар для Antony41
 
Регистрация: 20.03.2009
Сообщений: 99
По умолчанию

Модальная форма таймер не тормозит.
Код в студию
Antony41 вне форума Ответить с цитированием
Старый 13.06.2015, 15:55   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Если я ошибаюсь, то значит что-то в ИТ индустрии пошло не так.
Чот не так. Кризис...

Вложения
Тип файла: rar 279424 - Модальная форма и таймер.rar (96.7 Кб, 10 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 13.06.2015, 16:11   #9
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Покажите код как вы создаете вторую форму, если вы ее создаете с ожиданием ее завершения то да будет блокировка всего на других.
Насколько я понял вы ожидаете закрытия созданной формы if (Form.ShowModal() <> mrOk) then
если так то вам таймер нужно создавать и запускать в отдельном модуле.

Последний раз редактировалось Aliens_wolfs; 13.06.2015 в 16:18.
Aliens_wolfs вне форума Ответить с цитированием
Старый 13.06.2015, 16:29   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Насколько я понял вы ожидаете закрытия созданной формы if (Form.ShowModal() <> mrOk) then
если так то вам таймер нужно создавать и запускать в отдельном модуле.
возьми мою дему и убедись, что не прав.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не останавливается таймер при смене Activity Mihanches Java Мобильная разработка (Android) 0 25.12.2014 20:05
NOD 32 выругался при заходе в тему "Литература в помощь при работе с базами данных", что в разделе "БД в Delphi" Вадим Мошев О форуме и сайтах клуба 4 09.11.2014 10:14
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
"Выползание" формы при наведении мыши к краю экрана Neeter Общие вопросы Delphi 3 18.04.2009 22:10