SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(CalendarGrid)

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

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

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

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

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

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

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

修正履歴

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(CalendarGrid)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8008 2014/09/22 11:29

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング