procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var i:integer; begin if key=#8 then begin edit1.Clear; key:=#0; exit; end; if not (key in ['0'..'9',#13,'-',#8] ) then begin key:=#0; exit; end; //////////////////////////是滞能进行-的插入/////////////////////////////// if key='-'then begin if length(edit1.text)=6 then begin edit1.SelStart:=5; edit1.Text :=copy(edit1.Text,1,5)+'0'+copy(edit1.text,6,1);//'-'; edit1.SelStart:=8; end; //end; if (length(edit1.text)<>4) and (length(edit1.text)<>7) then begin key:=#0; exit; end; end; //***************************************************************判断输入的年是否有效 //////////////////////////////////////////////////////////// if (length(edit1.text))=4 then if (strtoint(copy(edit1.text,1,4))<1000) or (strtoint(copy(edit1.text,1,4))>2050) then begin application.MessageBox('不是有效的年,您的输入范围只能在1000-2050之间','提示',mb_ok+mb_iconinformation); key:=#0; edit1.Clear; exit; end; //////////////////////////////////////////////////////////// //////////////////////////是滞能进行-的插入//////////////////////////// if (length(edit1.Text)=4)and (key<>'-')and(key<>#8) then begin edit1.SelLength:=0; edit1.SelStart:=4; edit1.Text :=edit1.Text +'-'; edit1.SelStart:=5; end; if (length(edit1.Text)=7) and (key<>'-')and(key<>#8) then begin edit1.SelStart:=7; edit1.Text :=edit1.Text+'-'; edit1.SelStart:=8; end;//////////////////////////////////////////////////////////////////// if (length(edit1.Text)>4) and(length(edit1.Text)<6)then begin if key in ['2'..'9'] then begin edit1.SelStart:=7; edit1.Text:=edit1.Text+'0'; edit1.SelStart:=8; end; end; //月 ////////////////////////////////////////// if length(edit1.Text)=6 then begin if copy(edit1.Text,6,1)='1' then if not(key in ['0'..'2',#8]) then begin key:=#0; exit; end; if copy(edit1.text,6,1)='0' then begin if not (key in['1'..'9',#8]) then begin key:=#0; exit; end; end; end; //以1打头的月 ///////////////////////////////////////////////////////// if length(edit1.Text)=8 then if strtoint(copy(edit1.Text,6,2))=2 then begin if not (key in['0'..'2',#8])then begin key:=#0; exit; end; end else begin if not (key in['0'..'3',#8]) then begin key:=#13; exit; end; end; //////////////////////////////////////////////////// if length(edit1.Text)>8 then begin i:=strtoint(copy(edit1.Text,6,2)); //////////////////////////////////////////////// if length(edit1.text)=9 then if i=2 then begin if (copy(edit1.text,9,1))='2' then begin //if not sfrn(copy(edit1.text,1,4)) then if Not IsLeapYear(StrToInt(Copy(Edit1.Text,1,4))) then if not (key in ['0'..'8',#8]) then begin key:=#0; exit; end; end; end; { } ///////////////////////////////////////////////// 闰年 if i=0 then begin key:=#0; exit; end; if (i=1) or (i=3) or (i=5) or (i=7) or (i=8) or(i=10) or(i=12) then begin if not (key in['0'..'3',#8])then begin key:=#0; exit; end; if length(edit1.Text)=9 then if strtoint(copy(edit1.Text,9,1))=3 then if not(key in['0','1',#8]) then begin key:=#0; exit; end; // if not(key in['0','1',#8]) then end else begin if (not (key in ['0',#8])) and (copy(edit1.Text,9,1)='3')then begin key:= #0; exit; end; end; end; end;function TForm1.sfrn(str: string): boolean; var i,j,h:integer; begin if length(str)>4 then begin i:=length(str); application.MessageBox('不是有效的年','提示',mb_ok+mb_iconinformation); result:=false; exit; end else//i:=length] begin if (strtoint(str)<1000) or (strtoint(str)>2050) then begin //application.MessageBox('不是有效的年,您的输入范围只能在1000-2050之间','提示',mb_ok+mb_iconinformation); result:=false; exit; end;//if strtoint(str)<1000 end; i:=strtoint(str); if (i mod 400=0 )or ((i mod 4=0) and(i mod 100<>0)) then begin result:=true; end else begin result:=false; end; end;自己看一看;
然后编辑它的MaskEdit属性,剩下的不用我教了吧
var
i:integer;
begin
if key=#8 then
begin
edit1.Clear;
key:=#0;
exit;
end;
if not (key in ['0'..'9',#13,'-',#8] ) then
begin
key:=#0;
exit;
end;
//////////////////////////是滞能进行-的插入///////////////////////////////
if key='-'then
begin
if length(edit1.text)=6 then
begin
edit1.SelStart:=5;
edit1.Text :=copy(edit1.Text,1,5)+'0'+copy(edit1.text,6,1);//'-';
edit1.SelStart:=8;
end;
//end;
if (length(edit1.text)<>4) and (length(edit1.text)<>7) then
begin
key:=#0;
exit;
end;
end;
//***************************************************************判断输入的年是否有效
////////////////////////////////////////////////////////////
if (length(edit1.text))=4 then
if (strtoint(copy(edit1.text,1,4))<1000) or (strtoint(copy(edit1.text,1,4))>2050) then
begin
application.MessageBox('不是有效的年,您的输入范围只能在1000-2050之间','提示',mb_ok+mb_iconinformation);
key:=#0;
edit1.Clear;
exit;
end;
////////////////////////////////////////////////////////////
//////////////////////////是滞能进行-的插入////////////////////////////
if (length(edit1.Text)=4)and (key<>'-')and(key<>#8) then
begin
edit1.SelLength:=0;
edit1.SelStart:=4;
edit1.Text :=edit1.Text +'-';
edit1.SelStart:=5;
end;
if (length(edit1.Text)=7) and (key<>'-')and(key<>#8) then
begin
edit1.SelStart:=7;
edit1.Text :=edit1.Text+'-';
edit1.SelStart:=8;
end;////////////////////////////////////////////////////////////////////
if (length(edit1.Text)>4) and(length(edit1.Text)<6)then
begin
if key in ['2'..'9'] then
begin
edit1.SelStart:=7;
edit1.Text:=edit1.Text+'0';
edit1.SelStart:=8;
end;
end; //月
//////////////////////////////////////////
if length(edit1.Text)=6 then
begin
if copy(edit1.Text,6,1)='1' then
if not(key in ['0'..'2',#8]) then
begin
key:=#0;
exit;
end;
if copy(edit1.text,6,1)='0' then
begin
if not (key in['1'..'9',#8]) then
begin
key:=#0;
exit;
end;
end;
end; //以1打头的月
/////////////////////////////////////////////////////////
if length(edit1.Text)=8 then
if strtoint(copy(edit1.Text,6,2))=2 then
begin
if not (key in['0'..'2',#8])then
begin
key:=#0;
exit;
end;
end else
begin
if not (key in['0'..'3',#8]) then
begin
key:=#13;
exit;
end;
end;
////////////////////////////////////////////////////
if length(edit1.Text)>8 then
begin
i:=strtoint(copy(edit1.Text,6,2));
////////////////////////////////////////////////
if length(edit1.text)=9 then
if i=2 then
begin
if (copy(edit1.text,9,1))='2' then
begin
//if not sfrn(copy(edit1.text,1,4)) then
if Not IsLeapYear(StrToInt(Copy(Edit1.Text,1,4))) then
if not (key in ['0'..'8',#8]) then
begin
key:=#0;
exit;
end;
end;
end; { }
///////////////////////////////////////////////// 闰年
if i=0 then
begin
key:=#0;
exit;
end;
if (i=1) or (i=3) or (i=5) or (i=7) or (i=8) or(i=10) or(i=12) then
begin
if not (key in['0'..'3',#8])then
begin
key:=#0;
exit;
end;
if length(edit1.Text)=9 then
if strtoint(copy(edit1.Text,9,1))=3 then
if not(key in['0','1',#8]) then
begin
key:=#0;
exit;
end; // if not(key in['0','1',#8]) then
end else
begin
if (not (key in ['0',#8])) and (copy(edit1.Text,9,1)='3')then
begin
key:= #0;
exit;
end;
end;
end;
end;function TForm1.sfrn(str: string): boolean;
var
i,j,h:integer;
begin
if length(str)>4 then
begin
i:=length(str);
application.MessageBox('不是有效的年','提示',mb_ok+mb_iconinformation);
result:=false;
exit;
end else//i:=length]
begin
if (strtoint(str)<1000) or (strtoint(str)>2050) then
begin
//application.MessageBox('不是有效的年,您的输入范围只能在1000-2050之间','提示',mb_ok+mb_iconinformation);
result:=false;
exit;
end;//if strtoint(str)<1000
end;
i:=strtoint(str);
if (i mod 400=0 )or ((i mod 4=0) and(i mod 100<>0)) then
begin
result:=true;
end
else
begin
result:=false;
end;
end;自己看一看;
Uses
DateUtils;
双击table(query),单击右键->Add fields->选那个日期字段->ok
编辑它的Editmask为!9999/99/99;1;_
即可