毎分ゼロ秒に動作するタイマー
48 TimerRunZeroSecond 動作確認 Delphi2007 更新日 2008/01/29(火)

Timerを毎分ごとに動作したい場合
IntervalTime:=60000;
と設定するといいのですが

これだと、数秒ずつずれていってしまう場合があります。

そこで、次のようにします。
────────────────────
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  //タイマーでの処理

  Timer1.Interval := (60 - SecondOf(Now)) * 1000;
  Timer1.Enabled := True;
end;
────────────────────

これで、○○分20秒に起動したTimerは
40秒のインターバルタイムで次のイベントが呼ばれ
タイマー動作処理後に
05秒にEnabled:=Trueになった場合は55秒後に次のイベントが呼ばれるので
次回のイベントが
ほとんど○○分0秒に開始されることになります。


参考────────────────────
[Delphi-ML:85990] Re: タスクマネージャのようなコンポーネントはないでしょうか?
http://www2.big.or.jp/~osamu/Delphi/browse.cgi?index=85990