応用課題6-2

デモンストレーションをダウンロード

【応用課題6-1】に [リセット] ボタンをつけましょう。動作内容は以下の通りです。
制限時間が経過すると、次の状態になっているはずです。

ここで [リセット] ボタンをクリックすると、次のように、初期画面に戻るようにします。ここに制限時間 (残り時間) も最初に設定した値 (この例では10秒) に戻るようにしてください。


ヒント:最初に設定した制限時間の値を何らかの変数に格納しておく必要があります。そしてそれはグローバル変数でなければなりません。
6-1 ストップウォッチの作成


☆ 総目次へ ★ 第6章目次へ ★ 前節へ ★ 次節へ ☆

☆ 『Delphi入門』 6-1ストップウォッチの作成 ☆

練習問題

 まず、本節では次のようなデジタル・ストップウォッチを作成してみましょう。これは、[開始] ボタンをクリックすると1秒刻みで時刻が進行し、[停止] ボタンを押すと、その進行が停止するというプログラムです。

 まず、上のようなフォームを作成し、さらに System タグ内にある Timer コンポーネントをフォームに貼り付けてください。Timer コンポーネント (自体) は実行時には見えません。したがって貼り付ける場所もどこでも結構です。これは MainMenu コンポーネントの場合と同様です。

次に各コンポーネントの Name プロパティを次のように指定してください。

Timer コンポーネントについては次の様にプロパティを指定してください。

コンポーネント Nameプロパティ
スピンエディット CSpinEdit
開始ボタン ButtonStart
停止ボタン ButtonStop
プロパティ
Interval 1000(1秒の意味)
Enabled False
Name Timer

 ここで Timer コンポーネントについて説明しておきましょう。

 今の場合、(1秒ごとに呼び出される) OnTimer イベントの処理内容は、時刻を1秒ずつ増やす、つまりCSpinEdit内の数字に1を加える。となります。

それでは、以上を頭に入れておいてプログラミングに入りましょう。 まず、[開始]および[停止]ボタンクリックのイベントハンドラはそれぞれ次の様になります。

Timer の動作開始および停止は Enabledプロパティの値で切り替えることができます。[開始]ボタンをクリックした時に Timer が作動するようにしたいので、ここで EnabledプロパティTrue にします。

一方、[停止]ボタンをクリックした時に Timer を停止するのですから、EnabledFalse とすればよいのです。この点は皆もすぐに理解できるでしょう。 続いて、OnTimerイベントのイベントハンドラは前ページで説明した通り、次の様になります。

つまり、Interval で指定した1秒毎に CSpinEdit の値を1ずつ増やせば良い訳です。これで、完成です。動作を確かめてください。

 このように、Timer イベントを扱う場合、Enabled プロパティの切り替えと、Timer イベントのイベントハンドラの作成がポイントになります。

基礎課題6-1

上の【練習問題】に[リセット]ボタンをつけ、これをクリックすると初期状態、つまり0秒の状態に戻るようにしてください。
基礎課題6-1 解答
応用課題6-1

デモンストレーションをダウンロード

【練習問題】を修正して、今度は次の様に制限時間をカウントするタイマーを作成しましょう。
 動作内容は以下の通りです。なお、今の場合 [停止] ボタンは必要ないので削除しました。

今、適当に制限時間を設定します (下の例では10秒)。



[開始] ボタンをクリックするとカウントが開始され、残り時間 (秒数) が減って行きます。そして、残り時間が0となった時点で、“終了しました!”というメッセージが現れてタイマーは止まります。

ヒント:OnTimerイベントの処理内容が変わります。その処理内容は次の様になるはずです。

残り時間を1つ (1秒) 減らす

If (残り時間 = 0) '終了しました!' を表示する
Timer を止める
else 何もしない
応用課題6-1 解答
応用課題6−2 解答
☆ 『Delphi入門』 6-1ストップウォッチの作成 ☆

☆ 総目次へ ★ 第6章目次へ ★ 前節へ ★ 次節へ ☆