便利時計 VB6 |
ストップウォッチ
関数Timerを利用して、ストップウォッチを追加する。機能としては、もっともシンプルにスタートとストップのボタンを用意し、1/100秒程度の時間の計測ができるようにする。リセットのボタンは用意しないので、スタートボタンをクリックすると必ず0秒から計測を開始することにする。
タイマー(Timer2)
(オブジェクト名) … Timer2、 Interval … 10 (10/1000=1/100秒)、 Enable … False
スタート用ボタン(cmdSstart)
(オブジェクト名) … cmdSstart、 Height … 255 、Left … 120、 Top … 1680、 Width
… 615
Caption … Start
ストップ用ボタン(cmdSstop)
(オブジェクト名) … cmdSstop、 Height … 255 、Left … 840、 Top … 1680、 Width
… 615
Caption … Stop、 Enable … False
EnableプロパティをFalseにすると実行時にグレーアウト(使用不可、無効)になる。
ラベル(lblTime)
(オブジェクト名) … lblTime、 Left … 1560、 Top … 1680
Caption … 00:00:00.00、 AutoSize … True、 BackColor … &H00FFFFFF&(白色)
Font … スタイル=太字, サイズ=12
関数Timerでは、少数以下も得ることができるので、1/100秒程度の計測ができるようにする。そのため、Timer1オブジェクトでは動作間隔が長いので、もう一つタイマー(Timer2)を追加する。
・プログラムリスト
Private Function SWTime(dd As Single) Dim h As Integer, m As Integer, s As Integer h = Int(dd / 3600) '時間 dd = dd - h * 3600 m = Int(dd / 60) '分 dd = dd - m * 60 s = Int(dd) '秒 dd = Int((dd - s) * 100) 'ミリ秒 SWTime = Format(h, "00:") & Format(m, "00:") & Format(s, "00.") & Format(dd, "00") End Function
秒を時分秒の文字列(00:00:00.00)に変換するファンクションプロシージャである。
Option Explicit '宣言を強制する Dim TFlag As Integer 'タイマー用フラグ Dim sw As Single 'ストップウォッチ用スタート時間 #1 Private Sub cmdSstart_Click() sw = Timer 'スタート #2 Timer2.Enabled = True 'タイマー2作動 #3 cmdSstart.Enabled = False 'startボタン無効 #4 cmdSstop.Enabled = True 'stopボタン有効 #5 End Sub Private Sub cmdSstop_Click() Dim dd As Single dd = Timer - sw 'スタートからの時間計算 #6 Timer2.Enabled = False 'タイマー2停止 #7 cmdSstart.Enabled = True 'startボタン有効 #8 cmdSstop.Enabled = False 'stopボタン無効 #9 lblTime.Caption = SWTime(dd) '時間表示 #10 End Sub Private Sub Timer2_Timer() Dim dd As Single dd = Timer - sw 'スタートからの時間計算 #11 lblTime.Caption = SWTime(dd) '時間表示 #12 End Sub
(#1)スタートの時間を記憶しておくための変数swを宣言する。
スタートボタンをクリックするとcmdSstart_Clickプロシージャが処理される。(#2)スタート時間を変数swに記憶し、(#3)Timer2オブジェクトをスタートさせる。(#4)スタートボタンを無効にし、(#5)ストップボタンを有効にする。
ストップボタンをクリックするとcmdSstop_Clickプロシージャが処理される。(#6)現在時刻からスタート時の時間を減算して経過時間(秒)を計算する。(#7)Timer2オブジェクトを停止し、(#8)スタートボタンを有効にし、(#9)ストップボタンを無効にする。(#10)先に作った関数SWTimeで経過時間(秒)を時分秒に変換してラベルに表示する。
Timer2_Timerプロシージャは、約10ミリ秒ごとに処理される。(#11)経過時間を計算して(#12)表示する。
ポイント
ここでは、ボタンやタイマーのEnableプロパティを使って、実行中にボタンなどを使えるようにしたり、使えないようにすることができる。この機能を利用して、実行中にある条件が整わないときには特定の機能を使えないようにすることなど、誤使用防止を図ることができる。前のキッチンタイマーのスタートボタンも分と秒がゼロのときクリックしても動作しないようにしたが、グレーアウトしてクリックできないようにしておくこともできる。
フォームの大きさを調節
フォームには、実行時に表示されないデジタルの数字の画像(imgNum)が10個ある。しかし、この部分は実行時に空白になり、決して見栄えの良いものではない。フォームの高さを調節して、実行時に次図のようになるようにする。フォームの高さは2400である。
Form1のHeightプロパティを2400にすると、図の大きさになる。デジタル数字の画像が見えなくなるが、消えてしまった訳ではない。Heightプロパティを元の3600以上にすると見えるようになる。このようにプロパティウィンドウで設定する方法がある。
もう一つの方法は、プログラム中でHeightプロパティを設定する。このときは実行時、最初に一度だけでよいので、Form_Loadプロシージャに次のように書けばよい。
Form1.Height = 2400
どちらの方法でもよい。
Copyright © 2001 Hiroshi Masuda |