datatimepickerに-1をいれると1899/1/1のような値が表示されますが、これをdatatimepickerに日付が何も入っていない状態することは、date型だから不可能なのでしょうか?
こんにちは。
> date型だから不可能なのでしょうか?
そうなりますね。
procedure TForm1.SetDate(aDate: TDateTime);
begin
DateTimePicker1.ShowCheckBox := True;
if aDate = -1 then
DateTimePicker1.Date := Date
else
DateTimePicker1.Date := aDate;
DateTimePicker1.Checked := (aDate <> -1);
end;
ShowCheckBox を True に設定しておき、
チェックボックスのチェックの有無で "空の日付かどうか" を表現するしかないように思えます。
こんなことしてみましたが、。。。
procedure TForm1.SetDate(SDate: String);
var
ADate: TDateTime;
begin
if TryStrToDate(SDate,ADate) then
begin
DateTimePicker1.Format := '';
DateTimePicker1.DateTime := ADate;
end
else
DateTimePicker1.Format := ' ';
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if DateTimePicker1.Format=' ' then
ShowMessage( 'DateTimePicker Date is NULL' )
else
ShowMessage( 'DateTimePicker Date is '
+FormatDateTime('yyyy/mm/dd',DateTimePicker1.Date) );
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
SetDate('dummy');
end;
procedure TForm1.DateTimePicker1CloseUp(Sender: TObject);
begin
SetDate(FormatDateTime('yyyy/mm/dd',DateTimePicker1.Date));
end;
date関数を使って、現在の日付を表示するようにしました。
御二方、ありがとうございます。
ツイート | ![]() |