iCalendarファイルについて
GcCalendarCellは、RFC 2445規格に準じたiCalendarファイル(*.ics)のVEVENTコンポーネントのインポートとエクスポートをサポートしています。iCalendarおよびVEVENTの仕様については、「Internet Calendaring and Scheduling Core Object Specification (iCalendar)」をご参照ください。
GcCalendarCellでサポートするVEVENTプロパティの一覧、およびGcCalendarCellの祝日設定との関係は次の表のとおりです。
GcCalendarCellでサポートするVEVENTプロパティの一覧、およびGcCalendarCellの祝日設定との関係は次の表のとおりです。
VEVENT | Holiday | ForceHoliday/ForceWorkday | DayOfWeekHoliday | ForceDayOfWeekHoliday/ForceDayOfWeekWorkday |
---|---|---|---|---|
Summary | Name | Name | Name | Name |
DTStart.Month | StartMonth | × | × | × |
DTStart.Day | StartDay | × | × | × |
DTEnd.Month | EndMonth | × | × | × |
DTEnd.Day | EndDay | × | × | × |
DTStart | × | Start | × | × |
DTEnd | × | End | × | × |
DTStart.Year | × | × | × | Year |
RRule.ByMonth | × | × | Month | Month |
RRule.ByDay | × | × | DayOfWeek | DayOfWeek |
RRule.ByDay | × | × | DayOfWeekInMonth | DayOfWeekInMonth |
|
iCalendarファイルのインポート
設計時に、iCalendarファイルのイベント情報をGcCalendarCellの祝日にインポートするには、以下の手順で行います。
- GcCalendarCellを選択し、プロパティウィンドウでHolidayStylesプロパティの[...]ボタンをクリックします。
- 表示された休日エディタで[開く...]ボタンをクリックします。
- 「ファイルを開く」ダイアログボックスが表示されるので、ファイルの種類を「iCalendar file(*.ics)」に変更して、インポートするicsファイルを選択し[開く]ボタンをクリックします。
- 「iCalendarファイルのインポート」ダイアログが表示されるので、インポートするイベントのチェックボックスにチェックを付けます。「終日の予定のみ」のチェックを外せば、時刻まで指定したイベントを表示することが可能です。
- 「詳細欄」と「休日のタイプ」の内容を確認してから[OK]ボタンをクリックします。
- インポートされた休日の設定を変更する場合は、休日エディタの「休日の追加」タブで行います。
- 休日エディタの「スタイル」一覧に追加された休日スタイルのチェックボックスをチェックします。
- [OK]ボタンをクリックしてウィンドウを閉じます。
|
実行時にiCalendarファイルから休日をインポートするには、LoadHolidayFromiCalendarメソッドを使用します。次の例は、既存のiCalenderファイルからイベント情報をGcCalendarCellの休日に読み込み、表示する方法を示します。サンプルコードを実行するには、ディスクDの下に"Holiday.ics"というiCalendarファイルを配置しておく必要があります。
Imports GrapeCity.Win.MultiRow Imports PlusPakCell = GrapeCity.Win.MultiRow.PlusPak Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim GcCalendarCell1 = New PlusPak.GcCalendarCell() ' iCalendarファイルのパスを設定します。 Dim path As String = "D:\Holiday.ics" ' iCalendarファイルからすべてのイベントを取得し、GcCalendarCell1の休日に読み込みます。 Dim holidayStyle As PlusPakCell.HolidayStyle = GcCalendarCell1.LoadHolidayFromiCalendar(path) If holidayStyle Is Nothing Then MessageBox.Show("休日スタイルを読み込めませんでした。") Return End If holidayStyle.SubStyle = New PlusPakCell.SubStyle(Color.YellowGreen, Color.Red, True, False) GcCalendarCell1.ActiveHolidayStyles = New String() {holidayStyle.Name} Dim messageBoxVB As New System.Text.StringBuilder() For Each holiday As PlusPakCell.IHoliday In holidayStyle.Holidays messageBoxVB.AppendFormat("Name = {0}", holiday.Name) messageBoxVB.AppendLine() Next ' 読み込んだ休日の名前を表示します。 MessageBox.Show(messageBoxVB.ToString(), "All holidays") GcMultiRow1.Template = Template.CreateGridTemplate(New Cell() {GcCalendarCell1}) GcMultiRow1.RowCount = 10 End Sub
using GrapeCity.Win.MultiRow; using PlusPakCell = GrapeCity.Win.MultiRow.PlusPak; private void Form1_Load(object sender, EventArgs e) { PlusPakCell.GcCalendarCell gcCalendarCell1 = new PlusPakCell.GcCalendarCell(); // iCalendarファイルのパスを設定します。 string path = @"D:\Holiday.ics"; // iCalendarファイルからすべてのイベントを取得し、GcCalendar1の休日に読み込みます。 PlusPakCell.HolidayStyle holidayStyle = gcCalendarCell1.LoadHolidayFromiCalendar(path); if (holidayStyle == null) { MessageBox.Show("休日スタイルを読み込めませんでした。"); return; } holidayStyle.SubStyle = new PlusPakCell.SubStyle(Color.YellowGreen, Color.Red, true, false); gcCalendarCell1.ActiveHolidayStyles = new string[] { holidayStyle.Name }; System.Text.StringBuilder messageBoxCS = new System.Text.StringBuilder(); foreach (PlusPakCell.IHoliday holiday in holidayStyle.Holidays) { messageBoxCS.AppendFormat("Name = {0}", holiday.Name); messageBoxCS.AppendLine(); } // 読み込んだ休日の名前を表示します。 MessageBox.Show(messageBoxCS.ToString(), "All holidays"); gcMultiRow1.Template = Template.CreateGridTemplate(new Cell[] { gcCalendarCell1 }); gcMultiRow1.RowCount = 10; }
iCalendarファイルのエクスポート
GcCalendarCellに設定されている休日をiCalendarファイルにエクスポートするには、以下の手順で行います。
- GcCalendarCellを選択し、プロパティウィンドウでHolidayStylesプロパティの[...]ボタンをクリックします。
- 休日エディタの[保存...]ボタンをクリックします。
- 「名前を付けて保存」ダイアログボックスが表示されるので、「ファイルの種類」から"iCalendar file(*.ics)"を選択して、保存するファイル名を入力し[保存]ボタンをクリックします。
- 以上の操作で、カレンダーに休日スタイルがエクスポートされます。
Dim cell As PlusPakCell.GcCalendarCell = DirectCast(GcMultiRow1.Template.Row.Cells("GcCalendarCell1"), PlusPakCell.GcCalendarCell) cell.SaveHolidayToiCalendar("D:\Holidays.ics", "2015年臨時休業日")
PlusPakCell.GcCalendarCell cell = (gcMultiRow1.Template.Row.Cells["gcCalendarCell1"] as PlusPakCell.GcCalendarCell); cell.SaveHolidayToiCalendar(@"D:\Holidays.ics", "2015年臨時休業日");