Problem:
You're processing data in a loop and you expect to have any of the following happen:
- Response to a mouse-click (on a button or elsewhere).
- Draw something on the screen.
- Change a label.
- Change a mouse pointer.
But the program won't respond or do any of the above.(There may be other actions as well...)
Solution:
Add the line:
Application.ProcessMessages;
to your program, somewhere in the loop. This will give Windows a chance to process any messages for your application.
However, this can/will also slow processing in your loop. If speed is an issue, you can also include a counter and only call ProcessMessages every so many iterations through the loop. Something like this (i is an Integer variable):
If i = 100 then
begin
Application.ProcessMessages;
i := 1;
end
else
inc(i);
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.