|
元号選択式日付時刻入力コンポーネント
プロパティ |
動作確認等 |
図は Windows XP(SP3) + Delphi 7 Pro で作成 |
凡例 |
■ published
□ public
▲ ReadOnly |
元号選択時の AutoSelect プロパティ値による違い (結構悩みました).どちらも通常のコンボボックスとは配色が違います.通常のコンボボックスでは,リストの背景色が Color プロパティの値,選択中の Item の色は clHighlight となっています. |
|
図1
AutoSelect = True の場合
- リストの背景色は FocusedColor プロパティの色
- リスト内の選択中の Item は clHighlight の値
- 右は選択終了後
|
|
図2
AutoSelect = False の場合
- リストの背景色は Color プロパティの色
- リスト内の選択中の Item は FocusedColor の色
- 右は選択終了後
- FocusedColor が clWhite の時は通常のコンボボックスと同じ配色
|
EditStyle の値と入力表示コントロールの対応表です.
日付部 (年月日) だけを表示した場合は,DateTime には日付 (整数部) のみが格納されます.
時刻部のみを表示した場合は,DateTime には時刻の値 (小数点以下の値) のみを格納するようになっています. |
desYearMonthDayHMS |
年, 月, 日, 時, 分, 秒 |
|
desYearMontHM |
年, 月, 日, 時, 分 |
|
desYearH |
年, 月, 日, 時 |
|
desYearMonthDay |
年, 月, 日 (デフォルト) |
|
desYearMonth |
年, 月 |
|
desYear |
年 |
|
desHourMinuteSecond |
時, 分, 秒 |
|
desHourMinute |
時, 分 |
|
desHour |
時 |
|
以下のプロパティは読出し専用で,全て public なプロパティとなっています.これらの値を取得する際,入力日付が不正または範囲外の時はサイレント例外が発生します.この時,整数値のプロパティは 0,文字列のプロパティは空文字となります.和暦では,例えば,昭和70年1月1日を入力した時は,平成7年1月1日 (1995年1月1日) を返し,エラーとはなりません. |
▲ Year |
Integer |
西暦年の値 |
▲ Month |
Integer |
月の値
EditStyle が desYear の時は常に 1 |
▲ Day |
Integer |
日の値
EditStyle が desYear と desYearMonth のときは常に1 |
▲ YearStr |
String |
西暦年の文字列 |
▲ MonthStr |
String |
月の値の文字列
EditStyle が desYear の時は常に '1'
|
▲ DayStr |
String |
日の値の文字列
EditStyle が desYear と desYearMonth の時は常に '1' |
▲ GengoYear |
Integer |
和暦年の値 |
▲ GengoYearStr |
String |
和暦年の文字列 |
▲ GengoStr |
String |
元号の文字列 |
▲ Hour |
Integer |
時の値 |
▲ Minute |
Integer |
分の値 |
▲ Second |
Integer |
秒の値 |
▲ HourStr |
String |
時の文字列 |
▲ MinuteStr |
String |
分の文字列 |
▲ SecondStr |
String |
秒の文字列 |
▲ AmpmStr |
String |
午前か午後の文字列
午前午後の選択コンポボックス非表示の時は空文字 |
各プロパティは,Delphi の他のデータベース対応コンポーネントと同じ機能です.TplDBDateEdit 専用です. |
■ ReadOnley |
Boolean |
True にすると表示専用となる |
■ DataSouce |
TDataSource |
データソース.リストからも選択可能 |
■ Field |
String |
フィールド名.リストからも選択可能 |
リスト1
日付型 (TData) に null や nil は代入できないが,データベースの日付フィルードには,以下の様に nil を設定することができる. |
Table1.FieldByName('項目名').Assign(nil);
各入力用コントロールへのアクセスのためのプロパティです.使用例として,常に平成の年しか入力できないようにする例です. |
|
元号選択リスト部分が編集不可 |
GengoCombo |
TComboBox |
元号選択用のコンボボックス |
YearEdit |
TplDateEditEdit |
年の入力用コントロール |
MonthEdit |
TplDateEditEdit |
月の入力用コントロール |
DayEdit |
TplDateEditEdit |
日の入力用コントロール |
AmpmCombo |
TComboBox |
午前午後選択用のコンボボックス |
HourEdit |
TplDateEditEdit |
時の入力用コントロール |
MinuteEdit |
TplDateEditEdit |
分の入力用コントロール |
SecondEdit |
TplDateEditEdit |
秒の入力用コントロール |
リスト2
常に平成の年しか入力できないようにする例 |
procedure TForm1.FormCreate(Sender: TObject);
begin
//以下の設定は,表示コントロール等を変更すると無効
with plDateEdit1.GengoCombo do begin
Enabled := False;
Color := plDateEdit1.YearLabel.Color;
ItemIndex := 1;
end;
end;
各入力用コントロールの右側のラベルへのアクセスのためのプロパティです.例えば下のコードを実行すると,以下のような配色になります. |
YearLabel |
TplDateEditLabel |
年のラベル |
MonthLabel |
TplDateEditLabel |
月のラベル |
DayLabel |
TplDateEditLabel |
日のラベル |
HourLabel |
TplDateEditLabel |
時のラベル |
MinuteLabel |
TplDateEditLabel |
分のラベル |
SecondLabel |
TplDateEditLabel |
秒のラベル |
procedure TForm1.FormCreate(Sender: TObject);
begin
with plDateEdit1 do begin
YearLabel.Color := $004D5F6A;
MonthLabel.Color := $004D5F6A;
DayLabel.Color := $004D5F6A;
YearLabel.Font.Color := clWhite;
MonthLabel.Font.Color := clWhite;
DayLabel.Font.Color := clWhite;
end;
end;
|