Timerを止めるには


タイマー  2004-10-28 02:56:48  No: 11549  IP: [192.*.*.*]

OnTimerのイベントを50ミリ秒ごとに繰り返し、
ストップボタンを押したときにイベントを止めたいと考えています。
しかしストップボタンを押したときに
Timer1.Enabled := False;
としても、イベントが止まってくれません。
どうすればよいのでしょうか?
どなたか教えてください。お願いします。

編集    削除
HOta  2004-10-28 05:15:41  No: 11550  IP: [192.*.*.*]

タイマーさん
>OnTimerのイベントを50ミリ秒ごとに繰り返し、
これでは、他のイベントの入る隙間がないのでは?

編集    削除
ふぐちゃん  2004-10-28 05:36:08  No: 11551  IP: [192.*.*.*]

ずいぶん前のことですが、TTimerのIntervalを100ミリ秒以下にすると
正常に動作しなくなることがあるという情報を見たことがあります。
マルチメディアタイマーの使用を検討されてはいかがですか?

編集    削除
にしの  2004-10-28 18:24:57  No: 11552  IP: [192.*.*.*]

OnTimerイベントで、
Application.ProcessMessages;
を実行しておけば止まるかと思います。
ただ、タイマは53ms以下は取得できなかったはず(win9x系だけかも)ですので、ふぐちゃんさんの言うようにマルチメディアタイマを使用するか、スレッドにしたほうがよろしいかと思います。

編集    削除
タイマー  2004-10-30 04:30:12  No: 11553  IP: [192.*.*.*]

ご回答ありがとうございます。

さらにお聞きしたいのですが、マルチメディアタイマを使用すると
HOtaさんがおっしゃったような”他のイベントの入る隙間がない”状態を
回避することができるのでしょうか?

またにしのさんに伺いたいのですが、
Application.ProcessMessages;は
OnTimerの最後に入れればよいのでしょうか?

何度も質問して申し訳ありませんが、よろしくお願いいたします。

編集    削除
ねぎ  2004-11-06 01:09:51  No: 11554  IP: [192.*.*.*]

マルチメディアタイマって、
Delphi6に対応しているやつもありますか?

編集    削除
LupinⅢ  URL  2004-11-06 01:32:33  No: 11555  IP: [192.*.*.*]

Application.ProcessMessagesはどの位置でも良いと思います。

[下記ヘルプから引用]
ProcessMessages メソッドは,アプリケーションがメッセージキューを処理できるよう,その実行を一時的に停止します。

編集    削除