Back to unsolved. I can't get this to work. I set up the DataModule and its components, but ttimer events aren't firing, some Indy stuff works because it's multi-threading and has its own timings, but a lot doesn't.
KodeZwerg explained that better than I ever could.
But... why would you want tot use timers in the first place. Such application that you speak about is event driven except not by using a standard windows message loop. You can create your own event loop and doing so in any which way is most convenient for you.
So as a simple example for a timer you could create your custom "timer" class with for example an update event that is called in your custom event loop and each and every time update is executed you check the time, check it against your interval property and either fire an event that is attached to your custom timer class or post a (event) message to your custom loop (which your event loop would have to deal with accordingly).
But for timed events I would probably just check against the current time and elapsed time in my custom event loop and when it matches, invoke the routine that needs to be run. It all depends on what you wish to achieve and how complicated you wish to make things. Another solution could be to use a thread instead.
Is what I want to do possible?
Sure, no problem. You just cant use any components that depend on the presence of a windows message loop (actually that is not entirely true because you could always resort to using a hidden window but in that case: what is the point).
PS: if you want to see a custom (terminal based) loop in action you can take f.e. a look at
FreeVision