For i= 1 To 5
(HTMLオブジェクトの操作)
Next
というプログラムなのですが、HTMLオブジェクトの操作のあとにタイマーコントロールを使い、1秒後に次の操作を行うとしています。が、そうなるとFor〜Nextが使えなくなってしまいます。
この場合どうしたらいいのでしょうか?
同じような質問が続いているような。
この場合はTimerコントロールを使うと、
Timer1.Interval = 1000としておいて
Private Sub Timer1_Timer()
Static count As Integer
Timer1.Enabled = False
count = count + 1
'(HTMLオブジェクトの操作)
If count < 5 Then
Timer1.Enabled = True
End If
End Sub
こんな方法で。
もちろんすぐ前に書いたwaitの方法もあります。
処理時刻保持用の配列を用意して、
Forループ内の処理時にtimegetTimeあたりで値を代入しておき、
TimerではIntervalを小さめにしておき(95系で55、NT系で10ぐらい)、
イベントプロシージャ内で各要素の値とtimeGetTimeの値を比較し、
差が1000を超えたら「次の操作」をすればいいのでは?
timeGetTime(API)を使って、一秒間ループを繰り返すか、Sleep関数を使って一秒間ウェイトをかけるとかすればいいと思いますが…
編集 削除ループはCPUに負担をかける。
Sleep関数はその間の処理が遅れてしまう。
Timerイベントは精度が悪い。
で、Timerイベント内で、timeGetTimeの値と比較というのが、
定石になっているようですね。
私はマルチメディアタイマーを使用しています。
上記のような欠点が無い、イイ方法と思うのですが、
知名度が低いのはナゼ?