![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Продолжение выполнения программы при вызове ShowMessage
kirill-nevers © (2003-08-07 16:37:00)
Всем привет!
У меня следующий вопрос:
В моей программе есть поток (TThread), который постоянно выполняется в фоновом режиме и время от времени вносит изменения в свойства элементов главной формы. В момент этого изменения я показываю сообщение процедурой ShowMessage. Однако при вызове этой процедуры все приложение останавливается (дополнительный поток тоже) и ждет нажатия кнопки ОК на сообщении. А мне надо сделать чтобы даже когда сообщение на экране, фоновый процесс продолжался и мог вносить изменения в элементы главной формы. Я пробовал создать другой класс, наследующий TThread, засунуть ShowMessage в одну из его процедур, и вызывать эту процедуру, но это ничего не дало. Если кто-нибудь знает как это обойти, буду очень благодарен за совет!
KA_ (2003-08-08 10:39:00) [1]
Не используй функцию ShowMessage. Создай свое собственное окно и показывай его методом Show, т.е. как немодальное.
Evgeny V (2003-08-08 05:31:00) [2]
nikkie> угу, а Synchronize вызывает SendMessage, так что возможно panov прав. Код нужен, так трудно сказать
nikkie (2003-08-07 22:59:00) [3]
>panov, Ученик
По-моему вы не про то... про SendMessage/PostMessage речи не было, а то, что остальные окна становятся disabled никак не может влиять на то, что поток останавливается.
>kirill-nevers
Не очень понятно что именно ты делаешь... Я так понял, что поток меняет (используя Synchronize?) свойства какого контроля на форме. Срабатывает событие OnChange в котором вызывается ShowMessage. Единственный выход - не вызывать ShowMessage из процедур, которые могут быть вызваны из другого потока посредством Synchronize. Вместо этого пошли какое-нибудь сообщение самому себе с помощью PostMessage и вызывай ShowMessage в обработчике этого сообщения.
Ученик (2003-08-07 21:24:00) [4]
ShowMessage - модальное окно, все остальные окна приложения получают состояние WS_DISABLED
panov (2003-08-07 17:04:00) [5]
ЛУчше бы ты код привел.
Но все же есть подозрение, что используешь SendMesage. А нужно PostMesage.