Microsoft Visual Basic Express スタート キット

スタート キット : デジタル時計

内容 :

概要
このスタートキットで学ぶポイント
はじめに
デジタル時計の動作
拡張
参照項目

概要

デジタル時計

デジタル時計は、時間を LED デジタル風に表示するアプリケーションです。OS に指定されたタイムゾーンの現在日時をメイン時計に表示し、下部のサブ時計にはユーザーが指定したタイムゾーンの日時を表示します。また、アラーム機能も実装されています。このアラーム機能の基本コードの一部を変更することで、設定されたアラーム時刻の動作を変更することができます。



このスタートキットで学ぶポイント

このスタート キットを通して学べることは、主に、アプリケーションの動作、ソース コードを編成する方法、プロパティの追加などがあげられます。また、この アプリケーションには以下のテクノロジが使用されています。



はじめに

デジタル時計のビルドと実行

デジタル時計を実行するには

デジタル時計が起動します。表示されたデジタル時計には、OS に指定されているタイムゾーンの現在の日時が表示されます。


サブ時計を利用する

サブ時計

サブ時計は、メイン時計の下部に表示され、指定された地域の現在の日時を表示することができます。

サブ時計を表示するには

デジタル時計の下部にもう一つの時計が表示されます。表示されたサブ時計には、タイムゾーン「(GMT-08:00) 太平洋標準時 (米国およびカナダ); ティファナ」の現在の日時が表示されます。タイムゾーンは、「オプション」ダイアログボックスで自由に変更することができます。

サブ時計を非表示にするには

これにより、サブ時計が非表示となり、メイン時計のみの表示となります。

サブ時計のタイムゾーンを変更するには

  1. フォームの[オプション]ボタンをクリックします。
  2. 表示された「オプション」ダイアログボックスの[タイムゾーン]タブを選択します。
  3. ドロップダウンリストから表示したいタイムゾーンを選択します。
  4. [OK]ボタン、又は、[適用]ボタンをクリックします。

これにより、サブ時計は、選択したタイムゾーンの現在の日時が表示されます。タイムゾーンの設定は、アプリケーションを再起動後も維持されます。そのため、タイムゾーンの変更後、アプリケーションを再起動すると、終了直前のタイムゾーンがサブ時計に設定されます。


アラームを設定する

メイン時計、サブ時計のそれぞれで、アラームの設定を行うことができます。設定方法は同じです。

アラームを設定するには

メイン時計、サブ時計それぞれでアラームの設定を行うことができます。設定方法は同じです。

アラームを ON に設定した場合、「12:00」になるとメッセージを表示します。アラーム時刻は変更することができます。

アラーム時刻を設定するには

アラーム

  1. フォームの[オプション]ボタンをクリックします。
  2. 表示された「オプション」ダイアログボックスの[アラーム]タブを選択します。
  3. 「アラームをオンにする」にチェックをつけます。
  4. チェックボックスの右端のテキストボックスに、時刻を"HH:mm"形式で指定します。
  5. [OK]ボタン、又は、[適用]ボタンをクリックします。

サウンドファイルを指定しない場合や、指定したサウンドファイルがない場合は、メッセージボックスを表示します。

時刻入力が不完全なときは、エラーメッセージを表示します。

アラーム時刻にサウンドを鳴らすには

  1. フォームの[オプション]ボタンをクリックします。
  2. 表示された「オプション」ダイアログボックスの[アラーム]タブを選択します。
  3. 「アラームをオンにする」にチェックをつけます。
  4. 下部のテキストにアラーム時刻時に鳴らすサウンドファイルをフルパスで指定します。
    [参照]ボタンをクリックし、ダイアログボックスから指定することもできます。
  5. [OK]ボタン、又は、[適用]ボタンをクリックします。

サウンドファイルを指定しない場合や、指定したサウンドファイルがない場合は、メッセージボックスを表示します。


フォームの表示状態を指定する

表示

フォームをトップモースト表示にするには

  1. フォームの[オプション]ボタンをクリックします。
  2. 表示された「オプション」ダイアログボックスの[表示]タブを選択します。
  3. 「フォームを常に手前に表示する」にチェックを入れます。
  4. [OK]ボタン、又は、[適用]ボタンをクリックします。

これにより、フォームは常に手前に表示されます。

フォームの透明度を変更するには

  1. フォームの[オプション]ボタンをクリックします。
  2. 表示された「オプション」ダイアログボックスの[表示]タブを選択します。
  3. 「透明度」欄のトラックバーのスライダを移動させます。
  4. [OK]ボタン、又は、[適用]ボタンをクリックします。

透明度は 10% から 100% まで設定可能です。

但し、画面の色が 24 ビット未満の場合、透明度は変更できません。


タスクトレイに表示されたアイコン

タスクトレイ

デジタル時計を起動すると、タスクトレイにアイコンが表示されます。ここでは、アプリケーションをアクティブにしたり、[オプション]ダイアログの表示したり、アプリケーションを終了したりすることができます。

アプリケーションをアクティブにするには

[オプション]ダイアログを表示するには

タスクトレイメニュー

  1. アイコンを右クリックします。
  2. 表示されたメニューから[オプション(O)]をクリックします。

アプリケーションを終了するには

  1. アイコンを右クリックします。
  2. 表示されたメニューから[閉じる(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 メソッドで行い、情報の取得は、アプリケーションの起動時に行います。設定デザインで登録した変数の利用方法は以下のとおりです。実装コードはそれぞれ一部のみです。

 

Private Sub 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


拡張

アラームの設定時刻になったときに行う処理は、簡単に変更することができます。たとえば、システムサウンドを指定して再生できるようにします。実装手順を示します。

アラーム設定時に鳴らす音をシステムサウンドにするには

  1. DigitalClockCtl.vb ファイルをコード表示します。
  2. システム サウンドの種類を設定と取得するプロパティと、アラーム設定時にサウンドファイルを鳴らすか、システム サウンドを鳴らすかを判断するプロパティを追加します。

      ' システム サウンドの種類を設定と取得するプロパティ
      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
  3. 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

    拡張

  4. OptionForm.vb ファイルをデザイン表示します。
  5. サウンド ファイルかシステムサウンドかを指定するためのラジオボタンと、システムサウンドを指定する ComboBox を追加します。
    ComboBoxItems プロパティにシステムサウンドの種類「Asterisk」「Beep」「Exclamation」「Hand」「Question」を設定します。

  6. OptionDataSetClass.vb ファイルをコード表示します。
  7. システム サウンドの種類を取得するメソッドを生成します。

    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
  8. 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
  9. F5 キーを押してアプリケーションを実行します。

上記では、サウンド ファイルを再生するのか、システムサウンドを再生するのかを判断し、指定したサウンドをアラームの設定時刻に再生する部分の実装のみを紹介しました。そのため、設定情報の保存などは行われません。設定情報の保存方法については「デジタル時計の動作」の「オプション設定の情報とアプリケーション情報の管理」を参照してください。



参照項目

オンライン情報源


© Microsoft Corporation and/or its suppliers.All rights reserved.Terms of Use.