Microsoft Visual Basic Express スタート キット

スタート キット : スケジューラ

内容 :

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

概要

スケジューラ

スケジューラは、スケジュールを管理するためのアプリケーションです。スケジュールの開始日時、終了日時、内容、場所、メモを入力して管理することができます。一月単位、二月単位、一日単位のスケジュールをスプリッタで区切って同時に表示できるので便利です。



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


はじめに

スケジューラのビルドと実行

スケジューラを実行するには

スケジューラが起動します。スケジューラの画面には、今月のスケジュール情報が表示されます。


スケジュールを入力する

スケジューラには、1日の中におさまるスケジュールと複数日にまたがるスケジュールを入力できます。また、スケジュールの繰り返しも設定できます。

スケジュールダイアログ

1日におさまるスケジュールを入力するには

  1. [スケジュールの追加] ボタンをクリックします。スケジュール ダイアログボックスが表示されます。
  2. スケジュールの基本情報を入力します。

スケジュールのタイトル、開始日時、終了日時、場所の情報を入力してください。時間と場所は省略可能です。

複数日にまたがるスケジュールを入力するには

  1. [スケジュールの追加] ボタンをクリックします。スケジュール ダイアログボックスが表示されます。
  2. スケジュールの基本情報を入力します。

スケジュールのタイトル、開始日時、終了日時、場所の情報を入力してください。時間と場所は省略可能です。開始日と終了日が異なる場合、複数日にまたがるスケジュールになります。

複数日にまたがるスケジュールを入力するには

  1. [スケジュールの追加] ボタンをクリックします。スケジュール ダイアログボックスが表示されます。
  2. スケジュールの基本情報を入力します。
    スケジュールのタイトル、開始日時、終了日時、場所の情報を入力してください。時間と場所は省略可能です。開始日と終了日が異なる場合、複数日にまたがるスケジュールになります。
  3. 繰り返し情報を入力します。
    繰り返しの種類を、「毎日」、「毎週」、「毎月」の中から選んでください。そして、繰り返しを終える日にちを設定します。

複数日にまたがるスケジュールの場合、次の制限があります。

スケジュール期間が2日以上の場合:「毎日」は選択不可。

スケジュール期間が8日以上の場合:「毎日」、「毎週」は選択不可。

スケジュール期間が29日以上の場合:「毎日」、「毎週」、「毎月」は選択不可。

スケジュールを編集する

  1. 編集したいスケジュールを、1ヶ月表示画面または1日表示画面で選択し、[スケジュールの編集] ボタンをクリックします。または、スケジュールをダブルクリックします。

スケジュール ダイアログボックスが表示されます。このダイアログボックスで、スケジュールを追加したときと同様に入力してください。


スケジュールを削除する

  1. 削除したいスケジュールをクリックして選択し、マウスの右ボタンを押します。ポップアップメニューが表示されます。
  2. ポップアップメニューで [スケジュールの削除] を選択します。

設定を変更する

設定ダイアログ1

表示する週の数を変更するには

  1. [設定] ボタンをクリックします。
  2. 「表示」タブで「表示する週の数」を設定します。

1ヶ月表示画面で表示する週の数を4から8の範囲で変更できます。

スケジュールのフォントサイズを変更するには

  1. [設定] ボタンをクリックします。
  2. 「表示」タブで「スケジュールのフォントサイズ」を設定します。

1ヶ月表示画面で表示するフォントサイズを7から20の範囲で変更できます。

スケジュール表示の色を変更するには

  1. [設定] ボタンをクリックします。
  2. 「表示」タブの「スケジュールの色」リストボックスで、変更したい項目を選択します。
  3. [色の設定] ボタンを押します。

「色の設定」ダイアログボックスが表示されるので、ここで色を選択します。

画像ファイルを変更するには

  1. [設定] ボタンをクリックします。
  2. 「画像」タブの「画像ファイル」リストボックスで、変更したい月の画像ファイルのパスを選択します。
    「新しい画像ファイル」テキストボックスに、パスの文字列が表示されます。
  3. 「新しい画像ファイル」テキストボックスに、新しい画像のパスを入力します。
    [参照] ボタンを押してファイルを選択することもできます。

印刷をする

印刷プレビュー

1ヶ月表示画面で表示している月のスケジュールを印刷することができます。

  1. 印刷したい月のスケジュールを表示し、[印刷] ボタンをクリックします。
    印刷プレビュー画面が表示されます。
  2. 印刷プレビュー画面で、[印刷] ボタンを押してください。

壁紙にスケジュールを描画する

壁紙へ描画

1ヶ月表示画面で表示している月のスケジュールを壁紙に描画することができます。

 

  1. 壁紙に表示したい月のスケジュールを表示し、[壁紙へ描画] ボタンをクリックします。
    壁紙ダイアログボックスが表示されます。
  2. 「壁紙へスケジュールを描画する」を選択し、[OK] ボタンを押します。
    スケジュールが、半透明の形で壁紙に描画されます。この機能は、壁紙の表示位置の設定が「拡大して表示」のときだけ使用できます。

壁紙へ描画ダイアログ

壁紙を元に戻す

  1. [壁紙へ描画] ボタンをクリックします。
    壁紙ダイアログボックスが表示されます。
  2. 「元の壁紙に戻す」を選択し、[OK] ボタンを押します。

 

スケジュールを検索する

検索ダイアログ

スケジュールを任意の文字列で検索することができます。

  1. [検索] ボタンをクリックします。
    「スケジュールの検索」ダイアログボックスが表示されます。
  2. 「検索文字列」欄に検索したい文字列を入力し、[検索] ボタンをクリックします。
    スケジュールのタイトルとメモに含まれる文字列から検索され、見つかった場合は、リストボックスにそのスケジュールが表示されます。
  3. リストボックス内のスケジュールを選択し、[そのスケジュールの日付に飛ぶ] ボタンを押してください。

スケジューラの動作

スケジューラのプロジェクト ファイルとフォルダ

プロジェクトには、次の Visual Basic ソースコード ファイルとフォルダが含まれています。

FormSchedulerMain.vb メインフォーム。
OptionDialog.vb 設定ダイアログボックスのフォーム。
SearchDialog.vb 検索ダイアログボックスのフォーム。
CalendarCtrl.vb 1ヶ月単位のカレンダーを表示し、スケジュールを入力する機能を持つユーザーコントロール
EditScheduleForm.vb スケジュールの追加・編集を行うダイアログボックスのフォーム。
LongScheduleCtrl.vb 2ヶ月単位のスケジュールを表示するユーザーコントロール
ScheduleDataClass.vb 一つ一つのスケジュール情報を管理するクラス。
OneDayClass.vb 1日ごとの情報を管理するクラス。
ConfigDataClass.vb アプリケーションの設定情報を保持するクラス。
DeskWallpaper.vb 壁紙を指定したファイルに変更するクラス。
MapImage.vb MapImage クラスと DeskWallpaper クラスを使用して、壁紙ファイルに透過した画像を重ね合わせた Image ファイルを作成し、壁紙をその Image ファイル変更するクラス。
GraphicalButtonCtrl.vb 半透明やグラデーションのボタンを表示し、管理するユーザーコントロール。
CalendarButtonCtrl.vb GraphicalButtonCtrl クラスを継承し、半透明ボタンにカレンダーを表示するユーザーコントロール
ArrowButtonCtrl.vb GraphicalButtonCtrl クラスを継承し、三角形の矢印ボタンを表示するユーザーコントロール

 

オプション設定の情報とアプリケーション情報の管理

アプリケーション終了時には、スケジュールのフォントサイズ、色、画像ファイルのパスなどのアプリケーション情報を保存します。これにより、次回アプリケーションが起動したとき、以前の設定情報で表示させることができます。オプション設定の情報、およびアプリケーションの情報は、ConfigDataClassで管理しています。

設定情報やアプリケーション情報は、FormSchedulerMain フォームが表示されるときに LoadConfigdataFile メソッドでロードしています。また、FormSchedulerMain フォームが閉じるときに、SaveConfigDataFile メソッドで保存しています。それぞれ、シリアライズの機能を使って ConfigDataClass オブジェクトの内容をすべて XML ファイルに保存しています。保存先のファイルは、以下のとおりです。

[Schedulerアプリケーションの実行フォルダ]¥scheduler.config

スケジュールデータの保存

アプリケーション終了時に、ユーザーの入力したスケジュールデータは、Microsoft Access の mdb ファイルのデータベースに保存されます。また、開始時には、このデータベースからスケジュールデータを読み出します。

 

mdbファイルのあるパスは、以下のとおりです。

[Schedulerアプリケーションの実行フォルダ]¥Scheduler.mdb

 

スケジュールのデータは、Scheduler.mdb ファイル内の Schedules テーブルに保存されます。Schedules テーブルは、次のように定義されています。

Schedules テーブル

フィールド名 データ型 サイズ 説明
ID オートナンバー インデックス
StartDateTime テキスト型 50 スケジュールの開始日時
EndDateTime テキスト型 スケジュールの終了日時
InputDateTime テキスト型 50 スケジュールの入力日時
Title テキスト型 255 スケジュールのタイトル
Place テキスト型 255 スケジュールの場所
MemoData テキスト型 255 スケジュールの特記事項
RepeatStartDate テキスト型 50 スケジュールを繰り返す場合の開始日(未使用
RepeatEndDate テキスト型 50 スケジュールを繰り返す場合の終了日
RepeatType 数値型 繰り返しの種類(なし、毎日、毎週、毎月
ValidData Yes/No型 このスケジュールが有効かどうか

 

また、各日にちごとのメモ情報は、Scheduler.mdb ファイル内の Memos テーブルに保存されます。Memosテーブルは、次のように定義されています。

Memos テーブル

フィールド名 データ型 サイズ 説明
ID オートナンバー インデックス
DateData テキスト型 50 スケジュールの開始日時
MemoData テキスト型 255 メモのテキスト

 

拡張

スケジュールの情報をクリップボード経由でテキストエディタや Microsoft Excel にコピーできれば便利です。VB.NET では、クリップボードを簡単に扱うことができます。表示している1ヶ月分のスケジュール情報をクリップボードにコピーできるようにしてみます。実装手順を次に示します。

拡張

クリップボードにスケジュールをコピーするには

  1. CalendarCtrl.vb をデザイナで表示します。
  2. プロパティ画面で ContextMenuStrip1 コントロールを選択します。
  3. ContextMenuStrip1 に新しいメニュー項目「この月のスケジュールをクリップボードへコピー(&C)」を追加します。
  4. 新しく追加したメニュー項目の NameCopyScheduleToolStripMenuItem に変更します。
  5. このメニュー項目がクリックされたときのイベント ハンドラを作成します。デザイナ上で、この項目をダブルクリックして、CalendarCtrl.vb 内に CopyScheduleToolStripMenuItem_Click() メソッドを作成してください。

  6. このイベントハンドラを次のように記述します。クリップボードへデータをコピーするには、My.Computer.Clipboard オブジェクトを使用します。

    Private Sub CopyScheduleToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CopyScheduleToolStripMenuItem.Click
      Dim i As Integer
      Dim bufStr As String = ""
      bufStr = bufStr & "開始日時" & ControlChars.Tab & "終了日時" & ControlChars.Tab & _
        "予定内容" & ControlChars.Tab & "場所" & Environment.NewLine
      For i = 1 To DateTime.DaysInMonth(m_showingMonth.Year, m_showingMonth.Month)
        For Each scheduleData As ScheduleDataClass In m_showingMonthDays(i).ScheduleData
          If scheduleData.IsValid Then

            'スケジュールの内容をバッファへコピー(複数日にまたがるスケジュールは初日だけコピー)
            If(scheduleData.IsMultiDays = False) Or _
              (scheduleData.IsMultiDays = True And _
              m_showingMonthDays(i).DateOfThis.Date = scheduleData.StartDateTime.Date) Then

              bufStr = bufStr & scheduleData.StartDateTime.ToString & ControlChars.Tab & _
              scheduleData.EndDateTime.ToString & ControlChars.Tab & _
              scheduleData.Title & ControlChars.Tab & scheduleData.Place _
              & Environment.NewLine

            End If
          End If
        Next
      Next
      ' クリップボードへコピー
      My.Computer.Clipboard.SetText(bufStr)
    End Sub
  7. F5 キーを押してアプリケーションを実行します。


参照項目

オンライン情報源

 

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