第2章-4 Timerの使い方

今回はサンプルとしては次のようなものを作ります。
スタートボタンをクリックするとタイマーが動きだし、経過秒数が表示され始めます。
ストップボタンを押すとタイマーは停止し、経過秒数の表示も停止します。

timer1

まずは、Timerコントロールの配置です。下の図の赤丸のコントロールがTimerコントロールです。 これを、ツールウィンドゥからWindow1上へドラッグ&ドロップします。すると、座布団に座った(?) ストップウォッチの絵が配置されます。その他のコントロールについては前節までを参考にして下さい。

timer2

timer3

次に、Timerコントロールのプロパティですが次のよう設定しておきます。
プロパティの中でModePeriodを設定します。Modeはタイマの状態を表し、
0:タイマー停止
1:タイマスタート(一回だけ)
2:タイマスタート(二回以上)
の3種類です。
とりあえず、最初は"0"で停止の状態にしておきます。プログラム上でタイマーボタンがクリックされたら タイマーがスタートするようにします。
"1","2"については"1"が最初の設定時間経過まで、タイマーを動かす為のスタートで、"2"は繰り返し、 タイマー設定値ごとにタイマーを再スタートさせるスタートの意味です。
Periodは1000と設定します。単位はmsで、これで1秒のインターバルが作れます。

timer4

次に、コードを書きます。まずは、タイマーのスタート/ストップからです。スタートボタン のAction()に次のように書きます。繰り返しモードでタイマーをスタートさせます。プロパティはmode です。


Sub Action()
	Timer1.mode = 2          'タイマースタート(繰り返し起動)
End Sub
			

ストップはストップボタンのAction()に次のように書きます。これは初期状態と同じです。


Sub Action()
  Timer1.mode = 0           'タイマーストップ
End Sub
				

次は、タイマコントロールのAction()にコードを書きます。Window1上に配置したタイマコントロールを ダブルクリックすると、コードエディタが起動し、自動的にタイマーのAction()が開かれます。
ここに、次のようにコードを書きます。


Sub Action()
	if tm < 60 then					'60秒までカウント
		tm = tm+1
	else 
		tm = 0						'60秒を過ぎたら0に戻す
	end if
	StaTicText3.text = Str(tm)		'経過秒数表示
End Sub
			

特に意味はありませんが、ここでは60秒までカウントするようにしています。
このAction()は1秒ごとに実行されその度にtmがインクリメントされていきます。
そして、その値をStaticText3に表示しています。
tmの宣言がどこにもありませんが...。はい、これは新規に作成したプロパティです。 コードエディタを起動した状態で編集−新規プロパティを選択し、下記のように設定します。

timer5

さて、何故、tmというプロパティを新たに作ったのでしょう。
TimerのAction()の中で
dim tm as integer
としてはいけないのでしょうか?
こうしてしまうと、tmはローカルな変数になってしまい、TimerのActioin()の中だけでしか有効ではあ りません。すると、一旦このTimerのAction()を抜け出てしまと、その値を保持できないのです。従って 経過秒数はず−と1秒のまま、次に進まなくなってしまいます。(実際は経過してるんですよ)

以上で、終了です。実行してみて下さい。
スタートボタンをクリックすると経過秒数が表示され始めましたね。
それと、ここまで説明しませんでしたが、Window1上に配置したはずのTimerコントロールはプログラムを 実行したときには座布団に座ったストップウォッチは表示されません。安心しましたか^^;

目次に戻る