Чтобы таймер работал, ваша программа должна обрабатывать сообщения . В программе с графическим интерфейсом эта часть является автоматической; класс TApplication
обеспечивает это для вас. Но вы говорите, что у вас есть программа «без формы», поэтому я полагаю, что вы, вероятно, не вызываете Application.Run
в своем файле DPR.
Чтобы использовать таймер, вам нужно обрабатывать сообщения. Типичной отправной точкой для рассылки сообщений является код, подобный следующему:
while Integer(GetMessage(Msg, 0, 0, 0)) > 0 do begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
По истечении периода таймера ОС фактически помещает сообщение wm_Timer
в очередь сообщений вашей программы. Вызов GetMessage
извлекает сообщения из очереди, а DispatchMessage
вызывает оконную процедуру окна назначения. TTimer
создает для себя скрытое окно, которое будет служить целью для этих сообщений, а DispatchMessage
обеспечивает их получение.