PowerTools CalendarGrid for Windows Forms 1.0J
書式を設定する(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);


自由書式入力

InputManCellでサポートされません。


改行コードの取り扱い

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"];


イベントの利用

フィールド間のキャレットの移動を検出するには、GcDateTime.FieldEnter および FieldLeave イベントを使用します。


参照

 

 


© 2014 GrapeCity inc. All rights reserved.