如何控制在窗体中格式化输入日期变量(100分)

  • 主题发起人 主题发起人 kitty_chen
  • 开始时间 开始时间
K

kitty_chen

Unregistered / Unconfirmed
GUEST, unregistred user!
我的窗体上有一个edit输入日期,但是我无法控制让用户只输入合法的
日期格式,我试过用maskedit,但也无法对月、日的合法性进行控制,会出
现99月99日这种错误,请问如何解决?
 
procedure TFrmoverduty.ESdateSExit(Sender: TObject);
var dover:TDateTime;
begin
if ESdateS.Text<>'' then
begin
dover:=strtodatetime(ESdateS.text);
ESdateS.text:=datetimetostr(dover);
if ESdateS.Text<'1999-1-1' then
begin
showmessage('开始时间有误!');
ESdateS.SetFocus;
end;
end;
end;
 
function ValidDate(const s:String):Boolean;
begin
Result:=True;
try
StrToDate(s);
except
On EConvertError do Result:=False;
end;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if not ValidDate(Edit1.Text) then
begin
Application.MessageBox('Date format error.',
PChar(Application.Title),mb_OK+mb_IconError);
Edit1.SetFocus;
end;
end;
 
也许可以试试看用RX控件里的日期输入Edit,毕竟控件可以提高效率:)
 
请教mikecool老兄,哪里有日期输入Edit,RX控件控件是什么?
多谢!多谢!
 
其实你可以用Tdatetimepicker控件,在WIN32页上,把控件的DATEMODE属性设为
combobox即可,也不用用STRTODATE转换,很方便。
 
Rx控件最新版本2.75
教育网访问http://www.net-wing.net/kangwei/
国外访问http://www.torry.ru/
都会有的,稍微大一点的Delphi站点都有
自己找找吧,我试验了一下,它虽然也可以输入99-99-99这种数字,但是可以在离开
框体的时候进行检查,也提供另类输入方法,你试试看
这个控件1兆左右,如果不能找到我给你Mail一个
 
多人接受答案了。
 
请试一试下面的源代码:
procedure TForm1.DateEditExit(Sender: TObject);
begin
//利用函数转换的错误捕捉来处理...
if DateEdit1.Text<>'' then
begin
try
StrToDate(DateEdit1.Text);//转换
except
DateEdit1.SetFocus;
MessageBeep(0);
raise Exception.Create('"'+DateEdit1.Text+'" 不是正确的日期格式!');
end{try};
DateEdit1.Text:=DateToStr(StrToDate(DateEdit1.Text));
end{if};
end;

 
后退
顶部