PowerTools MultiRow for Windows Forms 8.0J
カレンダーの操作

GcCalendarCellでカレンダーの表示を切り替える方法について、以下に解説します。

コンテキストメニューの切り替え

GcCalendarEditingControl.ShowContextMenuプロパティを使用すると、セル上でマウスの右ボタンをクリックしたときに表示されるコンテキストメニューの表示/非表示を切り替えられます。
また、ContextMenuContentプロパティを使用することでコンテキストメニューに表示する項目の種類を設定できます。休日スタイル(HolidayStyles)、”今日へ移動”(GoToToday)、もしくはその両方(both)の種類が設定可能になっており、既定値はBoth(両方)です。

ContextMenuContentの値 コンテキストメニューの表示内容
HolidayStyles 休日スタイルを指定または解除

GoToToday 今日に該当するカレンダー上の日付への移動

Both HolidayStylesとGoToTodayの両方


  • コンテキストメニュー上の休日スタイルはHolidayStyleCollectionコレクションにHolidayStyleオブジェクトが追加されているときだけ表示されます。

独自コンテキストメニューの使用

表示するコンテキストメニューをデフォルトのコンテキストメニューから独自のコンテキストメニューに切り替えるにはGcCalendarEditingControl.ContextMenuプロパティを使用します。
なお、デフォルトのコンテキストメニューはHolidayStyleCollectionクラスにHolidayStyleオブジェクトが追加されているときだけ表示されます。このメニューは、実行時に休日スタイルを指定または解除するために用意されています。

次のコードは、GcMultiRow.EditingControlShowingイベントを使用してGcCalendarCellの編集セルに独自のコンテキストメニューを表示します。また、フォームに配置された CheckBoxの値によってコンテキストメニューの表示/非表示を切り替えます。

Imports GrapeCity.Win.MultiRow
Imports PlusPakCell = GrapeCity.Win.MultiRow.PlusPak

Private contextMenu1 As ContextMenu

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim GcCalendarCell1 As New PlusPakCell.GcCalendarCell()

    GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcCalendarCell1})
    GcMultiRow1.RowCount = 10

    ' コンテキストメニューの設定
    Dim item1 As New MenuItem("AAA")
    Dim item2 As New MenuItem("BBB")
    Dim item3 As New MenuItem("CCC")

    contextMenu1 = New ContextMenu(New MenuItem() {item1, item2, item3})
End Sub

Private Sub GcMultiRow1_EditingControlShowing(sender As Object, e As EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
    Dim gcCalendarEditor As PlusPakCell.GcCalendarEditingControl = DirectCast(e.Control, PlusPakCell.GcCalendarEditingControl)

    If Not gcCalendarEditor Is Nothing Then
        ' GcCalendarCellの編集セルにコンテキストメニューを設定
        gcCalendarEditor.ContextMenu = contextMenu1

        ' コンテキストメニューの表示/非表示の設定
        If CheckBox1.Checked Then
            gcCalendarEditor.ShowContextMenu = True
        Else
            gcCalendarEditor.ShowContextMenu = False
        End If
    End If
End Sub
using GrapeCity.Win.MultiRow;
using PlusPakCell = GrapeCity.Win.MultiRow.PlusPak;

private ContextMenu contextMenu1;

private void Form1_Load(object sender, EventArgs e)
{
    PlusPakCell.GcCalendarCell gcCalendarCell1 = new PlusPakCell.GcCalendarCell();

    gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcCalendarCell1 });
    gcMultiRow1.RowCount = 10;

    // コンテキストメニューの設定
    MenuItem item1 = new MenuItem("AAA");
    MenuItem item2 = new MenuItem("BBB");
    MenuItem item3 = new MenuItem("CCC");

    contextMenu1 = new ContextMenu(new MenuItem[] { item1, item2, item3 });
}

private void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
{
    PlusPakCell.GcCalendarEditingControl gcCalendarEditor = (e.Control as PlusPakCell.GcCalendarEditingControl);

    if (gcCalendarEditor != null)
    {
        // GcCalendarCellの編集セルにコンテキストメニューを設定
        gcCalendarEditor.ContextMenu = contextMenu1;

        // コンテキストメニューの表示/非表示の設定
        if (checkBox1.Checked)
        {
            gcCalendarEditor.ShowContextMenu = true;
        }
        else
        {
            gcCalendarEditor.ShowContextMenu = false;
        }
    }
}
ナビゲーション

GcCalendarCellでは、ShowNavigatorプロパティの設定によって、ナビゲータをOutlookスタイルまたは表示なしに設定することができます。ナビゲータをOutlookスタイルにすることで、表示されている年や月を自由に切り替えられます。


また、Outlookスタイルのナビゲータに表示されているスキップボタンの1回の操作で移動する月の数は、ScrollRateプロパティで設定します。

 

ShowNavigatorプロパティがCalendarNavigators.Outlookの場合、ナビゲータを左クリックすることで年と月のリストが表示されます。このリストはShowNavigationPopupListプロパティをFalseに設定することで非表示に設定可能です。

 



以下のコードはナビゲータをOutlookに設定し、年と月のリストを非表示にする例です。

Imports GrapeCity.Win.MultiRow
Imports PlusPakCell = GrapeCity.Win.MultiRow.PlusPak

Dim GcCalendarCell1 = New PlusPak.GcCalendarCell()
' ナビゲータをOutlookに設定します。
GcCalendarCell1.ShowNavigator = PlusPakCell.CalendarNavigators.Outlook
' 年月リストを非表示に設定します。
GcCalendarCell1.ShowNavigationPopupList = False

GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcCalendarCell1})
GcMultiRow1.RowCount = 10
using GrapeCity.Win.MultiRow;
using PlusPakCell = GrapeCity.Win.MultiRow.PlusPak;

PlusPakCell.GcCalendarCell gcCalendarCell1 = new PlusPakCell.GcCalendarCell();
//ナビゲータをOutlookに設定します。
gcCalendarCell1.ShowNavigator = PlusPakCell.CalendarNavigators.Outlook;
//年月リストを非表示に設定します。
gcCalendarCell1.ShowNavigationPopupList = false;

gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcCalendarCell1 });
gcMultiRow1.RowCount = 10;
基点と期間の設定
カレンダーの最初の列に表示する曜日は、FirstDayOfWeekプロパティで設定します。通常のカレンダーでは、日曜日または月曜日が最初の列に表示されます。なお、デフォルトでは、週の開始曜日はシステムから取得されます。

12か月分のカレンダーを表示している場合に、左上に配置する最初の月は、FirstMonthInViewプロパティで設定します。FirstMonthInViewプロパティをMonths.Default以外に設定すると、指定した月が左上に表示されます。ナビゲータのスキップボタン、またはマウスホイールによるカレンダーのスクロールを行うと、ScrollRateプロパティの設定にかかわらず、常に1回の操作につき1年分のカレンダーがスクロールされます。カレンダー内に表示される最初の月はどんな場合にも変更されません。

カレンダーに表示する日付の最小値と最大値は、MinDateプロパティとMaxDateプロパティで設定します。この最小値と最大値を超える日付には、フォーカスを移動することはできません。
六曜の表示と取得
ShowRokuyou プロパティを設定することで、カレンダーの日付領域に六曜を表示することが可能です。日付領域に表示する六曜の配置位置は、RokuyouAlignment プロパティの設定によって決めます。

六曜のスタイル(フォント、文字色、文字の立体効果)は、その日付に指定しているスタイルに基づきます。日付に対するフォントサイズの比率は、RokuyouFontScale プロパティで設定できます。
参照

 

 


© 2008-2015 GrapeCity inc. All rights reserved.