function isdate(str: string): Boolean;
const datastr = '1234567890-';
var i: integer;
datestrlist: tstringlist;
begin
Result := False;
if length(trim(str)) < 1 then exit;
for i := 1 to length(str) do
if (pos(str[i], datastr) < 1) then exit;
datestrlist := tstringlist.Create;
datestrlist := split(str, '-');
try
with datestrlist do
begin
if Count <> 3 then exit;
if not isInteger(Strings[0]) then exit;
if not isInteger(Strings[1]) then exit;
if not isInteger(Strings[2]) then exit;
if (strtoint(Strings[0]) < 1500) or (strtoint(Strings[0]) > 5000) then exit;
if (strtoint(Strings[1]) < 1) or (strtoint(Strings[1]) > 12) then exit;
if (strtoint(Strings[2]) < 1) or (strtoint(Strings[2]) > 31) then exit;
end;
Result := true;
finally
datestrlist.Free;
end;
end;
procedure TfrmCHECKE.Edit1Exit(Sender: TObject);
begin
inherited;
if trim(Edit1.Text)='' then exit;
if not GF_Is_Date(Edit1.Text) then
begin
uf_Alert(''''+Edit1.Text+'''是无效的日期值!');
Edit1.Text:='';
Edit1.SetFocus;
end;
end;
function GF_Is_Date(StrDate: String): Boolean;
var
s_Date: String;
begin
s_Date:= Trim(StrDate);
begin
try
StrToDate(s_Date);
result:= true;
except
result:= false;
end;
end;
end;
试试这个!