全部入りの安心感! ComponentOne Studioオーバービュー
― Windows Forms編
ダウンロード サンプルソース (97.3 KB)
本格的なスケジューリングアプリ作成を支援「Schedule for Windows Forms」
スケジューラを作ろうと思った時、まず思い浮かぶのは、グリッドコントロールとカレンダコントロールを連携して作成するようなGUIです。しかし、グリッドコントロールを使ってOutlookの予定表やGoogleカレンダーのような、かっこいいGUIを作るのは意外と大変です。
Schedule for Windows Formsならば、Windowsフォームにコントロールを貼るだけで図2のようなスケジュール画面が完成します。

また、スケジュール画面をダブルクリックすれば、図3のダイアログが表示されて予定の記入ができます。

注意点としては、図3のダイアログをカスタマイズできないということです。
Schedule for Windows Formsは、業務用コンポーネントのようなものに相当するので、例えば、一般的なコントロールのように[名前を付けて保存]ボタンを非表示にしたり、連絡先・分類項目・リソースなどの不要な項目を非表示にしたりといったプロパティはありません。好みや案件の特性などにもよるとは思いますが、図3にある項目は予定表には必要な機能だとして業務画面の仕様に採用するという考え方もあるでしょう。
別の方法としては、Schedule for Windows FormsのBeforeAppointmentCreateイベントの中でe.Cancel = Trueを実行して図3のダイアログの表示を抑止し、自分で作成したWindwosフォームを代わりに呼び出すようにプログラミングする方法です(詳しくはComponentOne Studioに添付されている「C1Schedule_Samples_VB\CustomData」サンプルを参考にしてください)。
Schedule for Windows Formsのプログラミング例
Schedule for Windows FormsでDataSetの内容を予定表に表示するには、AppointmentStorageのDataSourceにDataSetを設定します。今回は、画面で変更した内容が自動的にDataSetに反映されるように、DataSetをDataSourceに指定したBindingSourceコントロールをAppointmentStorageのDataSourceに指定します。

Private ds As DataSet
Private Sub Me_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
Using _proc As New CZ1004DataAccess
ds = _proc.GetRecord("", "")
If ds.Tables("予定") IsNot Nothing Then
Me.BindingSource1.DataSource = ds
With Me.C1Schedule1.DataStorage.AppointmentStorage
.Mappings.Start.MappingName = "開始日時"
.Mappings.End.MappingName = "終了日時"
.Mappings.Location.MappingName = "場所"
.Mappings.Subject.MappingName = "件名"
.Mappings.Body.MappingName = "本文"
.DataMember = "予定"
.DataSource = Me.BindingSource1
End With
End If
End Using
End Sub
Private Sub C1Schedule1_AppointmentAdded(ByVal sender As Object, _
ByVal e As C1.C1Schedule.AppointmentEventArgs) _
Handles C1Schedule1.AppointmentAdded
Using _proc As New CZ1004DataAccess
_proc.SetRecord("", "", ds)
End Using
End Sub
Private Sub C1Schedule1_AppointmentChanged(ByVal sender As Object, _
ByVal e As C1.C1Schedule.AppointmentEventArgs) _
Handles C1Schedule1.AppointmentChanged
Using _proc As New CZ1004DataAccess
_proc.SetRecord("", "", ds)
End Using
End Sub
Private Sub C1Schedule1_AppointmentDeleted(ByVal sender As Object, _
ByVal e As C1.C1Schedule.AppointmentEventArgs) _
Handles C1Schedule1.AppointmentDeleted
Using _proc As New CZ1004DataAccess
_proc.SetRecord("", "", ds)
End Using
End Sub
- フォームが表示されたときに発生するShownイベントでCZ1004DataAccessクラスのGetRecordメソッドを実行して、取得したデータを予定表に表示
- 予定表の内容を変更するとAppointmentAddedイベント、AppointmentChangedイベント、AppointmentDeletedイベントが発生するので、それぞれのイベントの中でデータを格納するためにCZ1004DataAccessクラスのSetRecordメソッドを実行
リスト1では実際のデータ入出力をCZ1004DataAccessクラスに分離していますが、業務システム構築時であれば、CZ1004DataAccessクラスの中からSQL ServerやOracle DatabaseなどのRDBMSと接続したり、XML Webサービスなどのビジネスロジック層と接続したりして、データの管理を行います。
- 修正履歴
-
- 2010/04/28 16:16 一部文言を統一しました。
この記事は参考になりましたか?
- 現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ComponentOne Studio)連載記事一覧
- この記事の著者
-
初音玲(ハツネアキラ)
国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
