MESCIUS SPREAD for Windows Forms 17.0J > 開発者ガイド > セル型 > 編集可能なセル型 > 日付時刻型セル |
日付時刻型セルを使用すると、日付と時刻を表示するセルを設定し、このセルへのユーザー入力を日付と時刻だけに制限できます。 表示する日付と時刻の書式は、独自に指定できます。
日付時刻型セルとその各属性を設定するには、DateTimeCellTypeクラスを使用します。
日付時刻型セルは、Windowsの地域と言語の設定を使用してデフォルトの書式を設定します。
書式は、DateTimeCellTypeクラスのDateTimeFormatプロパティを使用して設定できます。設定値には、以下、DateTimeFormat列挙体の値を使用します。
DateTimeFormat列挙体の値 | 説明 |
---|---|
LongDate | 日付の長い形式を使用します。 |
LongDateWithTime | 日付と時刻の長い形式を使用します。 |
ShortDate | 日付の短い形式を使用します。 |
ShortDateWithTime | 日付と時刻の短い形式を使用します。 |
TimeOnly | 時刻のみを使用します(日付なし)。 |
UserDefined | 和暦など、ユーザー定義の日付と時刻の書式を使用します。和暦の設定方法については、後述の「和暦の使用について」を参照してください。 |
日付時刻型セルの日時表示に長い形式を使用している場合は、たとえば現在の日時が「10/29/2002 11:10:01」であれば、セルを表すCellクラスのTextプロパティはこのセルの書式付きデータとして「Tuesday, October 29, 2002 11:10:01 AM」を返します。この日時に対し、ValueプロパティはDateTimeオブジェクトを返します。
また、DateTimeCellTypeクラスは、データモデルに書き込む値を定義するためのEditorValueプロパティを備えています。
デフォルトでは、実行時に編集モードの日付時刻型セルをダブルクリックすると、ポップアップカレンダー(またはクロック)が表示されます。この動作を有効にするかどうかを設定できます。また、この電卓に表示される[OK]および[キャンセル]ボタンのテキストをカスタマイズできます。詳細については、「ポップアップカレンダー」を参照してください。
DateTimeCellTypeクラスのTimeDefaultプロパティを使用すると、セルに入力されていない時刻部分に供給する値を設定できます。ポップアップカレンダーを使用してセルに日付を設定すると、この時刻は午前0時となります。他の時刻を使用するには、FpSpreadクラスのSubEditorClosedイベントを捕捉して、セルの値を変更する必要があります(セルにポップアップ表示させるクロックおよびカレンダーフォームを独自に作成し、SubEditorとして使用する方法もあります、詳しくはISubEditorインタフェースを参照してください)。
日付型セルのValueプロパティが返す値は、日付と時刻をカプセル化したDateTimeオブジェクトです。DateTimeオブジェクトのTimeOfDayプロパティを調べることで、その日の時刻を取得できます。
DateTimeCellTypeクラスのインスタンスを作成して、クラスの各プロパティを設定します。セルに設定する場合はCellクラスの、行に設定する場合はRowクラスの、列に設定する場合はColumnクラスの、あるいはスタイルに設定する場合はStyleInfoクラスのCellTypeプロパティに、定義したDateTimeCellTypeクラスのインスタンスを割り当てます。
次のサンプルコードは、セルを日付時刻型セルに設定します。「Tuesday, March 04(曜日、月、日)」の形式で日時を表示します。
C# |
コードのコピー
|
---|---|
FarPoint.Win.Spread.CellType.DateTimeCellType datecell = new FarPoint.Win.Spread.CellType.DateTimeCellType(); datecell.DateSeparator = " | "; datecell.TimeSeparator = "."; datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDateWithTime; datecell.MaximumDate = new System.DateTime(2100, 1, 1); datecell.MinimumDate = new System.DateTime(1990, 12, 31); datecell.MaximumTime = new System.TimeSpan(15, 59, 59); datecell.MinimumTime = new System.TimeSpan(11, 0, 0); fpSpread1.ActiveSheet.Columns[1].Width = 175; fpSpread1.ActiveSheet.Cells[1, 1].CellType = datecell; fpSpread1.ActiveSheet.Cells[1, 1].Value = System.DateTime.Now; |
Visual Basic |
コードのコピー
|
---|---|
Dim datecell As New FarPoint.Win.Spread.CellType.DateTimeCellType() datecell.DateSeparator = " | " datecell.TimeSeparator = "." datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.ShortDateWithTime datecell.MaximumDate = new System.DateTime(2100, 1, 1) datecell.MinimumDate = new System.DateTime(1990, 12, 31) datecell.MaximumTime = new System.TimeSpan(15, 59, 59) datecell.MinimumTime = new System.TimeSpan(11, 0, 0) fpSpread1.ActiveSheet.Columns(1).Width = 175 FpSpread1.ActiveSheet.Cells(1, 1).CellType = datecell FpSpread1.ActiveSheet.Cells(1, 1).Value = System.DateTime.Now |
または、セルまたはセル範囲を右クリックして[セル型]を選択します。 セル型の一覧から日付時刻型を選択します。 セル型エディタで、必要なプロパティを設定します。 〈適用〉ボタンをクリックします。
日付時刻型セルで和暦を設定する場合は以下の情報を参考にしてください。
和暦表示における年号はアプリケーション構成ファイルで定義できます。詳細については、「和暦年号の取得と設定」を参照してください。
和暦書式を使用する場合は、CellTypeプロパティの下位のプロパティリストに表示されるCalendarプロパティで「JapaneseCalendar」を選択します。
この設定により、お使いのコンピュータの「地域と言語の設定」において日付タブを選択し、カレンダー種類を「和暦」にした場合と同じ表示結果を得ることができます。 下の図はDateTimeCellType クラスのCalendar プロパティを「JapaneseCalendar」に設定した場合の表示例です。
SPREADの和暦表示 | 地域と言語のオプション |
---|---|
<注意>
|
なお、「平成22年」や「平成22年3月」のような独自形式での表示を行いたい場合は、Japaneseカレンダーを設定し、ユーザー定義書式を利用します。
DateTimeCellTypeクラスのインスタンスを作成します。DateTimeCellTypeクラスのCalendarプロパティを「Japanese」に、DateTimeFormatプロパティを「UserDefined」に、UserDefinedFormatプロパティに「ggyy年MM月」を設定します。セルに設定する場合はCellクラスの、行に設定する場合はRowクラスの、列に設定する場合はColumnクラスの、あるいはスタイルに設定する場合はStyleInfoクラスのCellTypeプロパティに、定義したDateTimeCellTypeクラスのインスタンスを割り当てます。
次のサンプル コードは、2行2列目のセルに「ggyy年MM月」の形式で日時を表示します。
C# |
コードのコピー
|
---|---|
FarPoint.Win.Spread.CellType.DateTimeCellType datecell = new FarPoint.Win.Spread.CellType.DateTimeCellType(); datecell.Calendar = new System.Globalization.JapaneseCalendar(); datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined; datecell.UserDefinedFormat = "ggyy年MM月"; fpSpread1.ActiveSheet.Cells[1, 1].CellType = datecell; |
Visual Basic |
コードのコピー
|
---|---|
Dim datecell As New FarPoint.Win.Spread.CellType.DateTimeCellType() datecell.Calendar = New System.Globalization.JapaneseCalendar() datecell.DateTimeFormat = FarPoint.Win.Spread.CellType.DateTimeFormat.UserDefined datecell.UserDefinedFormat = "ggyy年MM月" fpSpread1.ActiveSheet.Cells(1, 1).CellType = datecell |
|