GcDateTimeCellやGcCalendarCellのカレンダーに月曜以外の振替休日を設定するには?
対象製品
MultiRow for Windows Forms 7.0J
詳細
通常、日曜日が国民の祝日と重なった場合は、翌日の月曜日が振替休日となります。
しかし、ゴールデンウィークなど祝日が連続すると翌日の月曜日も祝日である場合があります。
たとえば、2014年は、5月4日のみどりの日が日曜日ですが、翌日の5日月曜日もこどもの日です。したがって、みどりの日の振替休日は翌々日の5月6日火曜日となります。
GcDateTimeCellのドロップダウンカレンダーやGcCalendarCellで、このような月曜以外の振替休日を設定するには、以下の方法があります。
■「翌営業日」を振替休日に設定する
振替休日の設定は、HolidayCollectionのWeekdaysプロパティを経由してDayOfWeekHolidayPolicyオブジェクトを使用しますが、DayOfWeekHolidayPolicyクラスのOverrideプロパティをNextWorkdayに設定すると振替休日を「翌日」ではなく「翌営業日」(次の祝日ではない日)と設定できます。デフォルトはNextDay(翌日)です。
次のサンプルコードは、GcDateTimeCellとGcCalendarCellに"NationalHoliday"というキーで登録されている休日スタイルの振替休日を「翌営業日」に変更する例です。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports InputManCell = GrapeCity.Win.MultiRow.InputMan
Imports PlusPakCell = GrapeCity.Win.MultiRow.PlusPak
' MultiRowのテンプレートを取得します。
Dim template1 As Template = GcMultiRow1.Template
' GcDateTimeCellの設定
' 休日のスタイルを取得します。
Dim nationalHoliday1 As InputManCell.HolidayStyle = DirectCast(template1.Row.Cells("GcDateTimeCell1"), InputManCell.GcDateTimeCell).DropDownCalendar.HolidayStyles("NationalHoliday")
' 振替休日を翌営業日に設定します。
nationalHoliday1.Holidays.Weekdays.Sunday = New GrapeCity.Win.Editors.DayOfWeekHolidayPolicy(GrapeCity.Win.Editors.WeekFlags.All, GrapeCity.Win.Editors.HolidayOverride.NextWorkDay)
'GcCalendarCellの設定
' 休日のスタイルを取得します。
Dim nationalHoliday2 As PlusPakCell.HolidayStyle = DirectCast(template1.Row.Cells("GcCalendarCell1"), PlusPakCell.GcCalendarCell).HolidayStyles("NationalHoliday")
' 振替休日を翌営業日に設定します。
nationalHoliday2.Holidays.Weekdays.Sunday = New GrapeCity.Win.Calendar.DayOfWeekHolidayPolicy(GrapeCity.Win.Calendar.WeekFlags.All, GrapeCity.Win.Calendar.HolidayOverride.NextWorkDay)
' テンプレートをMultiRowに設定します。
GcMultiRow1.Template = template1
[C#]
using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;
using PlusPakCell = GrapeCity.Win.MultiRow.PlusPak;
// MultiRowのテンプレートを取得します。
Template template1 = gcMultiRow1.Template;
// GcDateTimeCellの設定
// 休日のスタイルを取得します。
InputManCell.HolidayStyle nationalHoliday1 = (template1.Row.Cells["gcDateTimeCell1"] as InputManCell.GcDateTimeCell).DropDownCalendar.HolidayStyles["NationalHoliday"];
// 振替休日を翌営業日に設定します。
nationalHoliday1.Holidays.Weekdays.Sunday = new GrapeCity.Win.Editors.DayOfWeekHolidayPolicy(GrapeCity.Win.Editors.WeekFlags.All, GrapeCity.Win.Editors.HolidayOverride.NextWorkDay);
// //GcCalendarCellの設定
// 休日のスタイルを取得します。
PlusPakCell.HolidayStyle nationalHoliday2 = (template1.Row.Cells["gcCalendarCell1"] as PlusPakCell.GcCalendarCell).HolidayStyles["NationalHoliday"];
// 振替休日を翌営業日に設定します。
nationalHoliday2.Holidays.Weekdays.Sunday = new GrapeCity.Win.Calendar.DayOfWeekHolidayPolicy(GrapeCity.Win.Calendar.WeekFlags.All, GrapeCity.Win.Calendar.HolidayOverride.NextWorkDay);
// テンプレートをMultiRowに設定します。
gcMultiRow1.Template = template1;
祝日設定の詳細や具体的なサンプルコードについては製品ヘルプの下記の項を参照してください。
[PowerTools MultiRow for Windows Forms 7.0J]
- [InputManCell の使い方]
- [GcDateTimeCell]
- [ドロップダウンカレンダー (GcDateTimeCell)]
- [休日を設定する(ドロップダウンカレンダー)]
- [PlusPakCell の使い方]
- [GcCalendarCell]
- [休日を設定する (GcCalendarCell)]
■振替休日を休日として追加する
2014年5月6日などの月曜以外の振替休日を「振替休日」という名称の休日として追加します。
このとき、DayOfWeekHolidayPolicyクラスのOverrideプロパティはデフォルトのNextDay(翌日)のままにする必要があります。
製品に同梱される祝日定義ファイル(Holiday.xml)には月曜以外の振替休日も含まれています。月曜以外の振替休日含めていない最新の定義ファイルはこちらからダウンロードできます。
※最新の祝日定義ファイルは新しい祝日である「山の日」に対応しています。
祝日定義ファイルのインポートについては、製品ヘルプの下記の項を参照してください。
[PowerTools MultiRow for Windows Forms 7.0J]
- [InputManCell の使い方]
- [GcDateTimeCell]
- [祝日定義ファイルのインポート/エクスポート]
- [PlusPakCell の使い方]
- [GcCalendarCell]
- [祝日定義ファイルのインポート/エクスポート (GcCalendarCell)]
しかし、ゴールデンウィークなど祝日が連続すると翌日の月曜日も祝日である場合があります。
たとえば、2014年は、5月4日のみどりの日が日曜日ですが、翌日の5日月曜日もこどもの日です。したがって、みどりの日の振替休日は翌々日の5月6日火曜日となります。
GcDateTimeCellのドロップダウンカレンダーやGcCalendarCellで、このような月曜以外の振替休日を設定するには、以下の方法があります。
■「翌営業日」を振替休日に設定する
振替休日の設定は、HolidayCollectionのWeekdaysプロパティを経由してDayOfWeekHolidayPolicyオブジェクトを使用しますが、DayOfWeekHolidayPolicyクラスのOverrideプロパティをNextWorkdayに設定すると振替休日を「翌日」ではなく「翌営業日」(次の祝日ではない日)と設定できます。デフォルトはNextDay(翌日)です。
次のサンプルコードは、GcDateTimeCellとGcCalendarCellに"NationalHoliday"というキーで登録されている休日スタイルの振替休日を「翌営業日」に変更する例です。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports InputManCell = GrapeCity.Win.MultiRow.InputMan
Imports PlusPakCell = GrapeCity.Win.MultiRow.PlusPak
' MultiRowのテンプレートを取得します。
Dim template1 As Template = GcMultiRow1.Template
' GcDateTimeCellの設定
' 休日のスタイルを取得します。
Dim nationalHoliday1 As InputManCell.HolidayStyle = DirectCast(template1.Row.Cells("GcDateTimeCell1"), InputManCell.GcDateTimeCell).DropDownCalendar.HolidayStyles("NationalHoliday")
' 振替休日を翌営業日に設定します。
nationalHoliday1.Holidays.Weekdays.Sunday = New GrapeCity.Win.Editors.DayOfWeekHolidayPolicy(GrapeCity.Win.Editors.WeekFlags.All, GrapeCity.Win.Editors.HolidayOverride.NextWorkDay)
'GcCalendarCellの設定
' 休日のスタイルを取得します。
Dim nationalHoliday2 As PlusPakCell.HolidayStyle = DirectCast(template1.Row.Cells("GcCalendarCell1"), PlusPakCell.GcCalendarCell).HolidayStyles("NationalHoliday")
' 振替休日を翌営業日に設定します。
nationalHoliday2.Holidays.Weekdays.Sunday = New GrapeCity.Win.Calendar.DayOfWeekHolidayPolicy(GrapeCity.Win.Calendar.WeekFlags.All, GrapeCity.Win.Calendar.HolidayOverride.NextWorkDay)
' テンプレートをMultiRowに設定します。
GcMultiRow1.Template = template1
[C#]
using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;
using PlusPakCell = GrapeCity.Win.MultiRow.PlusPak;
// MultiRowのテンプレートを取得します。
Template template1 = gcMultiRow1.Template;
// GcDateTimeCellの設定
// 休日のスタイルを取得します。
InputManCell.HolidayStyle nationalHoliday1 = (template1.Row.Cells["gcDateTimeCell1"] as InputManCell.GcDateTimeCell).DropDownCalendar.HolidayStyles["NationalHoliday"];
// 振替休日を翌営業日に設定します。
nationalHoliday1.Holidays.Weekdays.Sunday = new GrapeCity.Win.Editors.DayOfWeekHolidayPolicy(GrapeCity.Win.Editors.WeekFlags.All, GrapeCity.Win.Editors.HolidayOverride.NextWorkDay);
// //GcCalendarCellの設定
// 休日のスタイルを取得します。
PlusPakCell.HolidayStyle nationalHoliday2 = (template1.Row.Cells["gcCalendarCell1"] as PlusPakCell.GcCalendarCell).HolidayStyles["NationalHoliday"];
// 振替休日を翌営業日に設定します。
nationalHoliday2.Holidays.Weekdays.Sunday = new GrapeCity.Win.Calendar.DayOfWeekHolidayPolicy(GrapeCity.Win.Calendar.WeekFlags.All, GrapeCity.Win.Calendar.HolidayOverride.NextWorkDay);
// テンプレートをMultiRowに設定します。
gcMultiRow1.Template = template1;
祝日設定の詳細や具体的なサンプルコードについては製品ヘルプの下記の項を参照してください。
[PowerTools MultiRow for Windows Forms 7.0J]
- [InputManCell の使い方]
- [GcDateTimeCell]
- [ドロップダウンカレンダー (GcDateTimeCell)]
- [休日を設定する(ドロップダウンカレンダー)]
- [PlusPakCell の使い方]
- [GcCalendarCell]
- [休日を設定する (GcCalendarCell)]
■振替休日を休日として追加する
2014年5月6日などの月曜以外の振替休日を「振替休日」という名称の休日として追加します。
このとき、DayOfWeekHolidayPolicyクラスのOverrideプロパティはデフォルトのNextDay(翌日)のままにする必要があります。
製品に同梱される祝日定義ファイル(Holiday.xml)には月曜以外の振替休日も含まれています。月曜以外の振替休日含めていない最新の定義ファイルはこちらからダウンロードできます。
※最新の祝日定義ファイルは新しい祝日である「山の日」に対応しています。
祝日定義ファイルのインポートについては、製品ヘルプの下記の項を参照してください。
[PowerTools MultiRow for Windows Forms 7.0J]
- [InputManCell の使い方]
- [GcDateTimeCell]
- [祝日定義ファイルのインポート/エクスポート]
- [PlusPakCell の使い方]
- [GcCalendarCell]
- [祝日定義ファイルのインポート/エクスポート (GcCalendarCell)]