PowerTools CalendarGrid for Windows Forms 1.0J > CalendarGridの使い方 > InputManCell > GcDateTime型セル > 書式を設定する(CalendarGcDateTimeCellType) |
CalendarGcDateTimeCellTypeの書式には、入力用と表示用の2つがあり、それぞれ入力フィールドと表示フィールドを使って書式を設定します。
入力フィールドを設定するには、Fieldsプロパティが参照するDateFieldCollectionを使用します。DateFieldCollectionは、セル内の各フィールドを表すDateFieldのコレクションを保持するクラスです。
一方、表示フィールドを設定するには、DisplayFieldsプロパティが参照するDateDisplayFieldCollectionを使用します。DateDisplayFieldCollectionは、セル内の各フィールドを表すDateDisplayFieldのコレクションを保持するクラスです。
CalendarGcDateTimeCellTypeの書式を設定するには、それぞれのコレクションのAddメソッドもしくはAddRangeメソッドを使用して直接フィールドオブジェクトを追加する方法と、AddRangeメソッドのオーバーライドの1つを使用して、キーワード文字列によりフィールドを自動生成する方法があります。それぞれの方法による書式の設定方法については、以下のトピックを参照してください。
CalendarGcDateTimeCellType.RecommendedValue プロパティを使用します。
入力書式を変更して非表示のフィールドが存在する場合、Valueプロパティがnull 参照 (Visual Basic では Nothing)になると、その後値が入力されたときに非表示のフィールドの値にはRecommendedValue プロパティの値が設定されます。RecommendedValue プロパティの値がnull 参照 (Visual Basic では Nothing)のときには、直前の「値がクリアされた時間」が設定されます。
以下のサンプルコードでは、年月だけの入力を許可してRecommendedValue プロパティにデフォルト値を設定しています。この場合、年月の入力が行われると、非表示になっている日と時分秒の部分には、RecommendedValue プロパティに設定された日と時分秒の値が設定されます。
Imports InputManCell = GrapeCity.Win.CalendarGrid.InputMan Dim today As DateTime = DateTime.Today Dim GcDateTimeCellType As New InputManCell.CalendarGcDateTimeCellType() ' フィールドをクリアします。 GcDateTimeCellType.Fields.Clear() ' キーワードから書式を設定します。 GcDateTimeCellType.Fields.AddRange("yyyy/MM") ' RecommendedValueプロパティに非表示フィールドのデフォルト値を設定します。 GcDateTimeCellType.RecommendedValue = New DateTime(2014, 6, 1, 18, 0, 0) GcCalendarGrid1.Content(today).Rows(1).Cells(0).CellType = GcDateTimeCellType ' Valueプロパティにnullを設定します。 GcCalendarGrid1.Content(today).Rows(1).Cells(0).Value = Nothing GcCalendarGrid1.ScrollIntoView(today)
using InputManCell = GrapeCity.Win.CalendarGrid.InputMan; var today = DateTime.Today; var gcDateTimeCellType = new InputManCell.CalendarGcDateTimeCellType(); // フィールドをクリアします。 gcDateTimeCellType.Fields.Clear(); // キーワードから書式を設定します。 gcDateTimeCellType.Fields.AddRange("yyyy/MM"); // RecommendedValueプロパティに非表示フィールドのデフォルト値を設定します。 gcDateTimeCellType.RecommendedValue = new DateTime(2014, 6, 1, 12, 0, 0); gcCalendarGrid1.Content[today].Rows[1].Cells[0].CellType = gcDateTimeCellType; // Valueプロパティにnullを設定します。 gcCalendarGrid1.Content[today].Rows[1].Cells[0].Value = null; gcCalendarGrid1.ScrollIntoView(today);
CalendarGcDateTimeCellType.AcceptsCrLfプロパティを使用します。
AcceptsCrLfプロパティを使用してクリップボードへ改行を含む文字列をコピー、または貼り付けた場合の改行コードの扱いを設定できます。AcceptsCrLfプロパティは、以下の3つの動作から選択します。
AcceptsCrLfの値 | 説明 |
---|---|
NoControl |
改行コードはそのままでコピー、貼り付けを行います。従来のInputManの日付時刻コントロールと同じ動作です。 |
Filter |
全ての改行コードを削除しコピー、貼り付けを行います。 |
Cut |
最初の改行コード以降の文字列を削除します。標準コントロールと同じ動作です。 |
CalendarGcDateTimeCellType.FieldsプロパティまたはGcDateTime.Fieldsプロパティのコレクションを通して特定のフィールドにアクセスできます。
フィールドコレクション内の特定のフィールドにアクセスする場合、次のいずれかの方法を使うことができます。
コレクションのインデックスがわかっている場合は、インデックスを使ってフィールドを取得することができます。
次のサンプルはインデックスを使ってフィールドを取得する例です。ここでは CalendarGcDateTimeCellTypeの3番目のフィールドを取得する例です。
Dim cell As GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType = CType(GcCalendarGrid1(DateTime.Today)(1, 0).CellType, GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType) Dim MyField As GrapeCity.Win.CalendarGrid.InputMan.DateField = cell.Fields(2)
GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType cell = (gcCalendarGrid1[DateTime.Today][1, 0].CellType as GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType);
GrapeCity.Win.CalendarGrid.InputMan.DateField myField = cell.Fields[2];
また、インデックスを使わず、設定したキー(文字列)を使って特定のフィールドにアクセスすることもできます。
キーは、各フィールドのNameプロパティにキーとして文字列を設定します。
次のサンプルはキーを使ってフィールドを取得する例です。ここではCalendarGcDateTimeCellTypeの特定のフィールドのNameプロパティに予め"Key1"という文字列が設定されていることを前提にしています。
Dim cell As GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType = CType(GcCalendarGrid1(DateTime.Today)(1, 0).CellType, GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType) Dim MyField As GrapeCity.Win.CalendarGrid.InputMan.DateField = cell.Fields("Key1")
GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType cell = (gcCalendarGrid1[DateTime.Today][1, 0].CellType as GrapeCity.Win.CalendarGrid.InputMan.CalendarGcDateTimeCellType); GrapeCity.Win.CalendarGrid.InputMan.DateField myField = cell.Fields["Key1"];