Good replies so far guys thanks!

One thing I noted though is from the help files in delphi;

OnIdle is called only once, as the application transitions into an idle state. It is not called continuously unless Done is set to false. Applications that set Done to false consume an inordinate amount of CPU time, which affects overall system performance.
In all the examples I've seen Done is set to false (obviously so that the game loop is a *loop* I guess ) ... does this imply that using a timer in some fasion is more efficient for the CPU?

Thanks for any enlightenment!

Neil