バーの塗りつぶし色の変更処理
アプリケーション実行時に、セルに設定したバーの塗りつぶし色を変更できる処理を組み込みます。
(1)処理は、まず色の選択ダイアログを表示する処理を作成します。これは、ボタン「バーの色」のClickイベントハンドラに作成します。ダイアログで選択した色はLabelコントロールを塗りつぶして表示します。
Imports GrapeCity.Win.CalendarGrid Public Class Form1 Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click If DialogResult.OK = ColorDialog1.ShowDialog() Then Label1.BackColor = ColorDialog1.Color End If End Sub
using GrapeCity.Win.CalendarGrid; namespace CalendarAppointment_Winform_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (DialogResult.OK == colorDialog1.ShowDialog()) { label1.BackColor = colorDialog1.Color; } }
(2)次に、ダイアログで選択した色をバーに反映する処理を作成します。これは、「決定」ボタンのClickイベントハンドラに作成します。
バーの色を変更するには、まずAngleBracketShapeRendererクラスのインスタンスを作成し、FillColorプロパティの値をダイアログで選択された色に変更します。
次に、CalendarAppointmentCellTypeのインスタンスを作成し、このRendererプロパティにAngleBracketShapeRendererクラスのインスタンスを設定します。
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click Dim c As Color c = ColorDialog1.Color Dim absr As New AngleBracketShapeRenderer() absr.FillColor = c Dim appointmentCellType As New CalendarAppointmentCellType() appointmentCellType.Renderer = absr
private void button2_Click(object sender, EventArgs e) { Color c; c = colorDialog1.Color; AngleBracketShapeRenderer absr = new AngleBracketShapeRenderer(); absr.FillColor = c; CalendarAppointmentCellType appointmentCellType = new CalendarAppointmentCellType(); appointmentCellType.Renderer = absr;
(3)作成したCalendarAppointmentCellTypeのインスタンスをバーに設定しますが、その前に現在選択されているバーの開始セルの位置を把握します。
これは、GcCalendarGridクラスのCurrentCellPositionオブジェクトの、Dateプロパティを参照することでセルの日付を、ColumnIndexプロパティで列番号を、RowIndexプロパティで行番号を取得します。
Dim d As System.DateTime = GcCalendarGrid1.CurrentCellPosition.Date Dim clm As Integer = GcCalendarGrid1.CurrentCellPosition.ColumnIndex Dim rw As Integer = GcCalendarGrid1.CurrentCellPosition.RowIndex
System.DateTime d = gcCalendarGrid1.CurrentCellPosition.Date; int clm = gcCalendarGrid1.CurrentCellPosition.ColumnIndex; int rw = gcCalendarGrid1.CurrentCellPosition.RowIndex;
(4)そして、この3つのデータを使ってバーの開始位置のセルにあるバーの、CellTypeプロパティに作成したCalendarAppointmentCellTypeオブジェクトのCloneメソッドを実行してコピーを代入します。このときは曜日と日付以外の行のセルに設定するようにしておきます。
If rw > 0 Then GcCalendarGrid1.Content(d).Rows(rw).Cells(clm).CellType = appointmentCellType.Clone() End If End Sub
if (rw > 0) { gcCalendarGrid1.Content[d].Rows[rw].Cells[clm].CellType = appointmentCellType.Clone(); } }
(5)以上で出来上がりです。セルに設定したバーの色は個々に変更することができます。
まとめ
このようにGcCalendarGridコントロールは、グレープシティの他のコンポーネントと同様に、ほとんどコーディングをすることなく多彩なコンポーネントの機能を自作のアプリケーションに実装することができます。
バーを使ったスケジューラの作成も簡単に行えますから、業務用アプリケーションの機能の一つとして取り入れてはいかがでしょうか。