本人想通过TEdit来解决日期的录入形式问题,但网上一直没找到合适的方法,今晚憋了1小时,只能用如下的方法解决,如高手们有简单的方法,请赐教。var
  Form1: TForm1;
  numedit:integer;//实际输入或剩余多少字符。implementation{$R *.dfm}procedure TForm1.FormShow(Sender: TObject);
begin
edit1.Text:='    -  -  ';//空的xxxx-xx-xx形式
end;procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var  sit:integer;//xxxx-xx-xx形式的日期字符串中numedit所在位置
var  text:string; //xxxx-xx-xx形式的日期字符串
begin //#8  退格键
//sit    :  12345678910
//       :  xxxx-xx-xx
//numedit:  1234 56 78  if not (key in ['0'..'9',#8,#13]) then
  begin
      key:=#0 ;
      exit;
  end;  if (numedit=0) and (key=#8)  then exit;  if not( key=#13) then
  begin
       if (not (numedit =0)) and (key=#8)  then
            dec(numedit)
       else
            inc(numedit);       if (numedit > 4) and (numedit <7) then
          sit:=numedit+1
       else if  (numedit >= 7) then
          sit:=numedit+2
       else
          sit:=numedit;       if ( not (sit=0))  and (not (key=#8)) then
       begin
           text:=edit1.Text;
           Text[sit]:=key;
           edit1.text:=text;
       end
       else  if  (key=#8)   then
       begin
           if (numedit <= 3) or (numedit = 5)
               or (numedit = 7) then
           begin
               text:=edit1.Text;
               Text[sit+1]:=' ' ;
               edit1.text:=text;
           end;           if (numedit = 4)  then
           begin
               text:=edit1.Text;
               Text[numedit+2]:=' ' ;
               edit1.text:=text;
           end;           if (numedit = 6)  then
           begin
               text:=edit1.Text;
               Text[numedit+3]:=' ' ;
               edit1.text:=text;
          end;
       end;
   end;
end;
实在是拿不到桌面上来的,望高手指正。