CodeZine(コードジン)

特集ページ一覧

ガントチャート風スケジューラを持った.NETアプリケーションの作成

CalendarGrid for Windows Formsを活用したWindowsフォームアプリケーションの作成

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/08/28 14:00
目次

バーの塗りつぶし色の変更処理

 アプリケーション実行時に、セルに設定したバーの塗りつぶし色を変更できる処理を組み込みます。

 (1)処理は、まず色の選択ダイアログを表示する処理を作成します。これは、ボタン「バーの色」のClickイベントハンドラに作成します。ダイアログで選択した色はLabelコントロールを塗りつぶして表示します。

Visual Basic
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
C#
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クラスのインスタンスを設定します。

Visual Basic
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
C#
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プロパティで行番号を取得します。

Visual Basic
Dim d As System.DateTime = GcCalendarGrid1.CurrentCellPosition.Date
Dim clm As Integer = GcCalendarGrid1.CurrentCellPosition.ColumnIndex
Dim rw As Integer = GcCalendarGrid1.CurrentCellPosition.RowIndex
C#
System.DateTime d = gcCalendarGrid1.CurrentCellPosition.Date;
int clm = gcCalendarGrid1.CurrentCellPosition.ColumnIndex;
int rw = gcCalendarGrid1.CurrentCellPosition.RowIndex;

 (4)そして、この3つのデータを使ってバーの開始位置のセルにあるバーの、CellTypeプロパティに作成したCalendarAppointmentCellTypeオブジェクトのCloneメソッドを実行してコピーを代入します。このときは曜日と日付以外の行のセルに設定するようにしておきます。

Visual Basic
    If rw > 0 Then
        GcCalendarGrid1.Content(d).Rows(rw).Cells(clm).CellType = appointmentCellType.Clone()
    End If
End Sub
C#
    if (rw > 0)
    {
        gcCalendarGrid1.Content[d].Rows[rw].Cells[clm].CellType = appointmentCellType.Clone();
    }
}

 (5)以上で出来上がりです。セルに設定したバーの色は個々に変更することができます。

セルに設定したバーの色は個々に変更することができる
セルに設定したバーの色は個々に変更することができる

まとめ

 このようにGcCalendarGridコントロールは、グレープシティの他のコンポーネントと同様に、ほとんどコーディングをすることなく多彩なコンポーネントの機能を自作のアプリケーションに実装することができます。

 バーを使ったスケジューラの作成も簡単に行えますから、業務用アプリケーションの機能の一つとして取り入れてはいかがでしょうか。



  • LINEで送る
  • このエントリーをはてなブックマークに追加

修正履歴

  • 2014/08/20 22:12 誤字を修正 瀬戸

バックナンバー

連載:ComponentZine(CalendarGrid)

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5