不知我说的明白不,各位

解决方案 »

  1.   

    IsValidDate不光日期有这个问题,其它类型也应该都有相关的规则。在合适的地方作判断
      

  2.   

    try
      date1:=StrToDate(edit1.text);
    except
      ShowMessage('时间格式应为1900-1-1');
      exit;
    end;
      

  3.   

    用TDateTimePicker控件好了非要用Edit输入的话,可以参考下面的实现方法:放一个 TMonthCalendar控件
    设置其visiable属性为 falseprocedure TForm1.MonthCalendar1Click(Sender: TObject);
    begin
      if(ActiveControl is TEdit) then
         TEdit(ActiveControl).text := DatetimeToStr(MonthCalendar1.date);
      MonthCalendar1.Hide;
    end;procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      MonthCalendar1.Visible := true;
      MonthCalendar1.Left := Edit1.Left;
      MonthCalendar1.Top := Edit1.Top + Edit1.Height;
    end;
      

  4.   

    用datetimepicker控件
    或者
    procedure TForm1.edit1Exit(Sender: TObject);
    var i:Tdatatime;
    begin
    if snedit1.Text<>'' then
    try
        i:=strtodatetime(snedit1.Text);
       except
       on E:EConvertError do begin messagedlg('格式不正确',mtconfirmation,[mbok],0);snedit1.Text:='';end;
       end;
      

  5.   

    用datetimepicker控件
    或者
    procedure TForm1.edit1Exit(Sender: TObject);
    var i:Tdatatime;
    begin
    if edit1.Text<>'' then
    try
        i:=strtodatetime(edit1.Text);
       except
       on E:EConvertError do begin messagedlg('格式不正确',mtconfirmation,[mbok],0);edit1.Text:='';end;
       end;