看一看,它能不能行;
======================
procedure Tm_dzxjxxform.Edit4KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
if key=#13 then
edit5.SetFocus;
if key=#8 then
begin
edit4.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(edit4.text)=6 then
begin
edit4.SelStart:=5;
edit4.Text :=copy(edit4.Text,1,5)+'0'+copy(edit4.text,6,1);//'-';
edit4.SelStart:=8;
end;
//end;
if (length(edit4.text)<>4) and (length(edit4.text)<>7) then
begin
key:=#0;
exit;
end;
end;
//***************************************************************判断输入的年是否有效
////////////////////////////////////////////////////////////
if (length(edit4.text))=4 then
if (strtoint(copy(edit4.text,1,4))<1000) or (strtoint(copy(edit4.text,1,4))>2050) then
begin
application.MessageBox('不是有效的年,您的输入范围只能在1000-2050之间','提示',mb_ok+mb_iconinformation);
key:=#0;
edit4.Clear;
exit;
end;
////////////////////////////////////////////////////////////
//////////////////////////是滞能进行-的插入////////////////////////////
if (length(edit4.Text)=4)and (key<>'-')and(key<>#8) then
begin
edit4.SelLength:=0;
edit4.SelStart:=4;
edit4.Text :=edit4.Text +'-';
edit4.SelStart:=5;
end;
if (length(edit4.Text)=7) and (key<>'-')and(key<>#8) then
begin
edit4.SelStart:=7;
edit4.Text :=edit4.Text+'-';
edit4.SelStart:=8;
end;////////////////////////////////////////////////////////////////////
if (length(edit4.Text)>4) and(length(edit4.Text)<6)then
begin
if key in ['2'..'9'] then
begin
edit4.SelStart:=7;
edit4.Text:=edit4.Text+'0';
edit4.SelStart:=8;
end;
end; //月
//////////////////////////////////////////
if length(edit4.Text)=6 then
begin
if copy(edit4.Text,6,1)='1' then
if not(key in ['0'..'2',#8]) then
begin
key:=#0;
exit;
end;
if copy(edit4.text,6,1)='0' then
begin
if not (key in['1'..'9',#8]) then
begin
key:=#0;
exit;
end;
end;
end; //以1打头的月
/////////////////////////////////////////////////////////
if length(edit4.Text)=8 then
if strtoint(copy(edit4.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(edit4.Text)>8 then
begin
i:=strtoint(copy(edit4.Text,6,2));
////////////////////////////////////////////////
if length(edit4.text)=9 then
if i=2 then
begin
if (copy(edit4.text,9,1))='2' then
begin
if not sfrn(copy(edit4.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(edit4.Text)=9 then
if strtoint(copy(edit4.Text,9,1))=3 then
if not(key in['0','1',#8]) then
begin
key:=#0;
exit;
end;
end else
begin
if (not (key in ['0',#8])) and (copy(edit4.Text,9,1)='3')then
begin
key:= #0;
exit;
end;
end;
end;
end;
=======
function Tm_dzxjxxform.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
begin
if (strtoint(str)<1000) or (strtoint(str)>2050) then
begin
result:=false;
exit;
end;
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;
======================
procedure Tm_dzxjxxform.Edit4KeyPress(Sender: TObject; var Key: Char);
var
i:integer;
begin
if key=#13 then
edit5.SetFocus;
if key=#8 then
begin
edit4.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(edit4.text)=6 then
begin
edit4.SelStart:=5;
edit4.Text :=copy(edit4.Text,1,5)+'0'+copy(edit4.text,6,1);//'-';
edit4.SelStart:=8;
end;
//end;
if (length(edit4.text)<>4) and (length(edit4.text)<>7) then
begin
key:=#0;
exit;
end;
end;
//***************************************************************判断输入的年是否有效
////////////////////////////////////////////////////////////
if (length(edit4.text))=4 then
if (strtoint(copy(edit4.text,1,4))<1000) or (strtoint(copy(edit4.text,1,4))>2050) then
begin
application.MessageBox('不是有效的年,您的输入范围只能在1000-2050之间','提示',mb_ok+mb_iconinformation);
key:=#0;
edit4.Clear;
exit;
end;
////////////////////////////////////////////////////////////
//////////////////////////是滞能进行-的插入////////////////////////////
if (length(edit4.Text)=4)and (key<>'-')and(key<>#8) then
begin
edit4.SelLength:=0;
edit4.SelStart:=4;
edit4.Text :=edit4.Text +'-';
edit4.SelStart:=5;
end;
if (length(edit4.Text)=7) and (key<>'-')and(key<>#8) then
begin
edit4.SelStart:=7;
edit4.Text :=edit4.Text+'-';
edit4.SelStart:=8;
end;////////////////////////////////////////////////////////////////////
if (length(edit4.Text)>4) and(length(edit4.Text)<6)then
begin
if key in ['2'..'9'] then
begin
edit4.SelStart:=7;
edit4.Text:=edit4.Text+'0';
edit4.SelStart:=8;
end;
end; //月
//////////////////////////////////////////
if length(edit4.Text)=6 then
begin
if copy(edit4.Text,6,1)='1' then
if not(key in ['0'..'2',#8]) then
begin
key:=#0;
exit;
end;
if copy(edit4.text,6,1)='0' then
begin
if not (key in['1'..'9',#8]) then
begin
key:=#0;
exit;
end;
end;
end; //以1打头的月
/////////////////////////////////////////////////////////
if length(edit4.Text)=8 then
if strtoint(copy(edit4.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(edit4.Text)>8 then
begin
i:=strtoint(copy(edit4.Text,6,2));
////////////////////////////////////////////////
if length(edit4.text)=9 then
if i=2 then
begin
if (copy(edit4.text,9,1))='2' then
begin
if not sfrn(copy(edit4.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(edit4.Text)=9 then
if strtoint(copy(edit4.Text,9,1))=3 then
if not(key in['0','1',#8]) then
begin
key:=#0;
exit;
end;
end else
begin
if (not (key in ['0',#8])) and (copy(edit4.Text,9,1)='3')then
begin
key:= #0;
exit;
end;
end;
end;
end;
=======
function Tm_dzxjxxform.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
begin
if (strtoint(str)<1000) or (strtoint(str)>2050) then
begin
result:=false;
exit;
end;
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;
...
你要以在该地方设置DATETIMEPICKER控件是否有效(或隐藏),如果党派为空即没有入党。如果党派有值,让DATETIMEPICKER有效(或显示)。
如果有时间的话是这样的 2000-02-11 是什么控件呢,TDateTimePicker 能不能不能实现?
如果你手头上有dx系列控件的话,可以使用TdxDBDateEdit,设置他的dateOnError属性为denull就行了,如果不是数据敏感的,就用TdxDateEdit,就可以了。
也可以使用两个控件,上边是Tedit,下面是TDateTimePicker,当入党时间为空时,设置tedit显示为空就可以了
yyyy-mm-dd.搞定!
DateTimePicker1.time:=0;