Microsoft Visual Basic Express スタート キット
スタート キット : デジタル時計
概要
このスタートキットで学ぶポイント
はじめに
デジタル時計の動作
拡張
参照項目
概要
デジタル時計は、時間を LED デジタル風に表示するアプリケーションです。OS に指定されたタイムゾーンの現在日時をメイン時計に表示し、下部のサブ時計にはユーザーが指定したタイムゾーンの日時を表示します。また、アラーム機能も実装されています。このアラーム機能の基本コードの一部を変更することで、設定されたアラーム時刻の動作を変更することができます。
このスタートキットで学ぶポイント
このスタート キットを通して学べることは、主に、アプリケーションの動作、ソース コードを編成する方法、プロパティの追加などがあげられます。また、この アプリケーションには以下のテクノロジが使用されています。
- GDI+ - グラフィックスとテキストの表示を実装します。
- Timer クラス - 時刻のカウントと、アラームのカウントを行います。
- Interop - Win32API を使用してタイムゾーン情報を取得します。
- Registry - レジストリからタイムゾーンリストを列挙します。
- NotifyIcon - タスクトレイへの追加を行います。
- My.Computer.Audio.Play - .wav サウンド ファイルの再生を行います。
- My.Settings オブジェクト - アプリケーションの設定値、及び、デジタル時計の設定情報の取得と設定を行います。
- Visual Basic 言語
はじめに
デジタル時計のビルドと実行
デジタル時計を実行するには
- F5 キーを押してアプリケーションを実行します。
デジタル時計が起動します。表示されたデジタル時計には、OS に指定されているタイムゾーンの現在の日時が表示されます。
サブ時計を利用する
サブ時計は、メイン時計の下部に表示され、指定された地域の現在の日時を表示することができます。
サブ時計を表示するには
- フォームの[オープン]ボタンをクリックします。
デジタル時計の下部にもう一つの時計が表示されます。表示されたサブ時計には、タイムゾーン「(GMT-08:00) 太平洋標準時 (米国およびカナダ); ティファナ」の現在の日時が表示されます。タイムゾーンは、「オプション」ダイアログボックスで自由に変更することができます。
サブ時計を非表示にするには
- サブ時計が表示されている状態で、フォームの[オープン]ボタンをクリックします。
これにより、サブ時計が非表示となり、メイン時計のみの表示となります。
サブ時計のタイムゾーンを変更するには
- フォームの[オプション]ボタンをクリックします。
- 表示された「オプション」ダイアログボックスの[タイムゾーン]タブを選択します。
- ドロップダウンリストから表示したいタイムゾーンを選択します。
- [OK]ボタン、又は、[適用]ボタンをクリックします。
これにより、サブ時計は、選択したタイムゾーンの現在の日時が表示されます。タイムゾーンの設定は、アプリケーションを再起動後も維持されます。そのため、タイムゾーンの変更後、アプリケーションを再起動すると、終了直前のタイムゾーンがサブ時計に設定されます。
アラームを設定する
メイン時計、サブ時計のそれぞれで、アラームの設定を行うことができます。設定方法は同じです。
アラームを設定するには
メイン時計、サブ時計それぞれでアラームの設定を行うことができます。設定方法は同じです。
- フォーム右端の[ON/OFF]スイッチをクリックし、上下にドラッグします。
アラームを ON に設定した場合、「12:00」になるとメッセージを表示します。アラーム時刻は変更することができます。
アラーム時刻を設定するには
- フォームの[オプション]ボタンをクリックします。
- 表示された「オプション」ダイアログボックスの[アラーム]タブを選択します。
- 「アラームをオンにする」にチェックをつけます。
- チェックボックスの右端のテキストボックスに、時刻を"HH:mm"形式で指定します。
- [OK]ボタン、又は、[適用]ボタンをクリックします。
サウンドファイルを指定しない場合や、指定したサウンドファイルがない場合は、メッセージボックスを表示します。
時刻入力が不完全なときは、エラーメッセージを表示します。
アラーム時刻にサウンドを鳴らすには
- フォームの[オプション]ボタンをクリックします。
- 表示された「オプション」ダイアログボックスの[アラーム]タブを選択します。
- 「アラームをオンにする」にチェックをつけます。
- 下部のテキストにアラーム時刻時に鳴らすサウンドファイルをフルパスで指定します。
[参照]ボタンをクリックし、ダイアログボックスから指定することもできます。 - [OK]ボタン、又は、[適用]ボタンをクリックします。
サウンドファイルを指定しない場合や、指定したサウンドファイルがない場合は、メッセージボックスを表示します。
フォームの表示状態を指定する
フォームをトップモースト表示にするには
- フォームの[オプション]ボタンをクリックします。
- 表示された「オプション」ダイアログボックスの[表示]タブを選択します。
- 「フォームを常に手前に表示する」にチェックを入れます。
- [OK]ボタン、又は、[適用]ボタンをクリックします。
これにより、フォームは常に手前に表示されます。
フォームの透明度を変更するには
- フォームの[オプション]ボタンをクリックします。
- 表示された「オプション」ダイアログボックスの[表示]タブを選択します。
- 「透明度」欄のトラックバーのスライダを移動させます。
- [OK]ボタン、又は、[適用]ボタンをクリックします。
透明度は 10% から 100% まで設定可能です。
但し、画面の色が 24 ビット未満の場合、透明度は変更できません。
タスクトレイに表示されたアイコン
デジタル時計を起動すると、タスクトレイにアイコンが表示されます。ここでは、アプリケーションをアクティブにしたり、[オプション]ダイアログの表示したり、アプリケーションを終了したりすることができます。
アプリケーションをアクティブにするには
- アイコンを左クリックします。
[オプション]ダイアログを表示するには
- アイコンを右クリックします。
- 表示されたメニューから[オプション(O)]をクリックします。
アプリケーションを終了するには
- アイコンを右クリックします。
- 表示されたメニューから[閉じる(X)]をクリックします。
デジタル時計の動作
デジタル時計のプロジェクト ファイルとフォルダ
プロジェクトには、次の Visual Basic ソースコード ファイルとフォルダが含まれています。
ClockForm.vb | メインフォーム。 |
OptionForm.vb | 設定オプションを表示する Windows フォーム。 |
OptionDataSetClass.vb | [オプション]ダイアログの設定内容をメインフォームに対応させるクラス。 |
DigitalClockCtl.vb | ユーザーコントロール。取得したタイムゾーンの情報に応じて日時を表示するユーザーコントロール。アラーム機能の実行も含みます。 |
TimeZone.vb | タイムゾーン名や指定したタイムゾーンの現在の日時を取得するクラス。 |
ImageButtonCtl.vb | ユーザーコントロール。イメージをボタンとして動作させるユーザーコントロール。「オープン」「オプション」「閉じる」ボタンなどのイメージボタンで使用しています。 |
SwitchImageButtonCtl.vb | ユーザーコントロール。アラームの ON/OFF をスイッチ形式で変更するコントロール。 |
TimeZoneNameLabelCtl.vb | ユーザーコントロール。タイムゾーン名を影付きテキストで表示するラベルコントロール。 |
オプション設定の情報とアプリケーション情報の管理
アプリケーションの終了時には、サブ時計に表示するタイムゾーンや、アラームの設定情報、さらに透過されたフォームや現在表示されている位置などのアプリケーション情報を保存します。これにより、再度、アプリケーションが起動した際、以前の設定情報で表示させることができます。オプション設定の情報、及び、アプリケーションの情報は、My.Settings を使用して管理します。My.Setting の設定は、設定デザインで行います。設定デザインで様々な設定情報を登録することでアプリケーションから登録した変数を利用することができます。設定デザインは、[プロジェクト]メニューの[DigitalClock のプロパティ]を選択し、アプリケーション デザインを起動します。左のタブリストから[設定]を選択して表示します。
設定情報やアプリケーション情報の管理は、メインフォームの ClockForm.vb ファイルで行います。情報の保存は、SaveConfigFile メソッドで行い、情報の取得は、アプリケーションの起動時に行います。設定デザインで登録した変数の利用方法は以下のとおりです。実装コードはそれぞれ一部のみです。
' アプリケーションの位置
My.Settings.DesktopLocation = New Point(Me.DesktopLocation.X, Me.DesktopLocation.Y)
'サブ時計
My.Settings.WorldTimeZone = Me.WorldDigitalClock.CurrentTimeZone ' タイム ゾーン名
My.Settings.WorldAlarm = Me.WorldSwitchImageButton.Switch
My.Settings.WorldSoundFileName = Me.WorldDigitalClock.SoundFileName
My.Settings.WorldAlarmTime = Me.WorldDigitalClock.AlarmTime.ToString
End Sub
Private Sub ClockForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' アプリケーション情報の取得
' アプリケーションが表示される位置とサイズを設定
If My.Settings.DesktopLocation.X = -300 And My.Settings.DesktopLocation.Y = -300 Then
Me.StartPosition = FormStartPosition.CenterParent
Me.Size = My.Settings.ClockSize
Else
Me.SetDesktopBounds(My.Settings.DesktopLocation.X, My.Settings.DesktopLocation.Y, My.Settings.ClockSize.Width, My.Settings.ClockSize.Height)
End If
' サブ時計のタイム ゾーンを設定
strWorldClockTimeZone = My.Settings.WorldTimeZone
Me.WorldDigitalClock.CurrentTimeZone = strWorldClockTimeZone
End Sub
拡張
アラームの設定時刻になったときに行う処理は、簡単に変更することができます。たとえば、システムサウンドを指定して再生できるようにします。実装手順を示します。
アラーム設定時に鳴らす音をシステムサウンドにするには
- DigitalClockCtl.vb ファイルをコード表示します。
システム サウンドの種類を設定と取得するプロパティと、アラーム設定時にサウンドファイルを鳴らすか、システム サウンドを鳴らすかを判断するプロパティを追加します。
' システム サウンドの種類を設定と取得するプロパティ
Private m_SystemSound As Media.SystemSound
Public Property SystemSound() As Media.SystemSound
Get
Return m_SystemSoundt
End Get
Set(ByVal value As Media.SystemSound)
m_SystemSound = value
End Set
End Property
' アラーム設定時にサウンドファイルを鳴らすか、システム サウンドを鳴らすかを判断するプロパティ
Private m_Sound As String
Public Property Sound() As String
Get
Return m_Sound
End Get
Set(ByVal value As String)
m_Sound = value
End Set
End Property
AlarmTimer_Tick イベントの「My.Computer.Audio.Play(SoundFileName) 」行を以下のように置き換えます。
If Sound = "File" Then
' サウンド ファイルを再生
My.Computer.Audio.Play(SoundFileName)
ElseIf Sound = "System" Then
' システム サウンドを再生
My.Computer.Audio.PlaySystemSound(SystemSound)
End If
- OptionForm.vb ファイルをデザイン表示します。
サウンド ファイルかシステムサウンドかを指定するためのラジオボタンと、システムサウンドを指定する ComboBox を追加します。
ComboBox のItems プロパティにシステムサウンドの種類「Asterisk」「Beep」「Exclamation」「Hand」「Question」を設定します。- OptionDataSetClass.vb ファイルをコード表示します。
システム サウンドの種類を取得するメソッドを生成します。
Private Function SystemSound(ByVal strSound As String) As Media.SystemSound
Dim sound As Media.SystemSound = Nothing
Select Case strSound
Case "Asterisk"
sound = Media.SystemSounds.Asterisk
Case "Beep"
sound = Media.SystemSounds.Beep
Case "Exclamation"
sound = Media.SystemSounds.Exclamation
Case "Hand"
sound = Media.SystemSounds.Hand
Case "Question"
sound = Media.SystemSounds.Question
End Select
Return sound
End Function
SetMainAlerm メソッドの「clockForm.NowDigitalClock.SoundFileName = strMainSoundFile 」行を以下のように置き換えます(今回はメイン時計部分を置き換えます)。
If optionForm.NowFileRadioButton.Checked = True Then
' サウンドファイルを再生する場合
clockForm.NowDigitalClock.SoundFileName = strMainSoundFile
clockForm.NowDigitalClock.Sound = "File"
ElseIf optionForm.NowSystemRadioButton.Checked = True Then
' システムサウンドを再生する場合
clockForm.NowDigitalClock.Sound = "System"
clockForm.NowDigitalClock.SystemSound = SystemSound(optionForm.NowSystemSoundComboBox.SelectedItem)
End If
- F5 キーを押してアプリケーションを実行します。
上記では、サウンド ファイルを再生するのか、システムサウンドを再生するのかを判断し、指定したサウンドをアラームの設定時刻に再生する部分の実装のみを紹介しました。そのため、設定情報の保存などは行われません。設定情報の保存方法については「デジタル時計の動作」の「オプション設定の情報とアプリケーション情報の管理」を参照してください。
参照項目
オンライン情報源
© Microsoft Corporation and/or its suppliers.All rights reserved.Terms of Use.