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:
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);