Не срабатывает TAction в цикле с ProcessMessages
Есть кнопка TToolButton событие нажатия в котором задаётся через TAction, при обычной работе оно срабатывает.
Выполняется цикл, который вызывает application.ProcessMessages, при этом при нажатии вышеописанную кнопку, сама кнопка нажимается, а обработчик события не вызывается. Кроме того не работает обновление событий TAction.
Кто-то уже с подобным сталкивался? какие есть пути решения?
Заранее спасибо !
Решается отказом от ProcessMessages. Она явно не для того создана, судя по тому как вы ее используете.
Обновление работать в любом случае не будет, т.к. оно работает только при простое приложения (Idle). А вот почему не отрабатывает OnClick... это надо будет поелозить по коду VCL. Возможно сообщение не попадает в очередь сообщений потока, т.е. обрабатывается локально.
Цитата: Phodopus
...Она явно не для того создана, судя по тому как вы ее используете.
Через нажатие кнопки организована пауза вычеслений.
а обновление решается теперь через ActionStart.Update, хотя это конечно, имхо, не верный подход.
Цитата: misha_turist
Через нажатие кнопки организована пауза вычеслений.
Т.е. вычисления происходят в потоке интерфейса? :D
Если так, то у вас точно проблемы с архитектурой.
Цитата: hardcase
Т.е. вычисления происходят в потоке интерфейса? :D
Если так, то у вас точно проблемы с архитектурой.
Если так, то у вас точно проблемы с архитектурой.
Вполне может быть, но
- "вычисления" идут минуту две не больше
- программа для внутреннего использования
- работать с потоками я не умею, пока что
- важно было сделать "быстро"
:)
Цитата: misha_turist
- "вычисления" идут минуту две не больше
Отличный повод использовать выделенный поток.
Цитата: misha_turist
- работать с потоками я не умею, пока что
Отличный повод научиться их использовать.
Цитата: misha_turist
- важно было сделать "быстро"
Что лучше: один раз сделать правильно и потом поддерживать это решение или каждый раз при потребности изменения кода долго охотиться на ведьм?
Цитата: hardcase
Отличный повод использовать выделенный поток.
----------------------------------
Отличный повод научиться их использовать.
----------------------------------
Что лучше: один раз сделать правильно и потом поддерживать это решение или каждый раз при потребности изменения кода долго охотиться на ведьм?
----------------------------------
Отличный повод научиться их использовать.
----------------------------------
Что лучше: один раз сделать правильно и потом поддерживать это решение или каждый раз при потребности изменения кода долго охотиться на ведьм?
Согласен.
Согласен.
Согласен, только программа нужна будет пол года не больше. дальше надобность в ней отпадёт. Хотя наверное действительно переделаю..