文本框中如何只能输入日期格式?格式为2003-08-06,“-”,“.”的ASC码值是什么?

解决方案 »

  1.   

    用MASKEDIT,然后在EDITMASK属性中选择DATE就可以了
      

  2.   

    unit UnitTime;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TFormTime = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Edit1: TEdit;
        Edit2: TEdit;
        Label1: TLabel;
        procedure Edit1KeyPress(Sender: TObject; var Key: Char);
        procedure Edit1Exit(Sender: TObject);
        procedure FormShow(Sender: TObject);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        IsTime1, IsTime2 : string ;
      public
        { Public declarations }
      end;var
      FormTime: TFormTime;implementation
      uses UniBank;
    {$R *.dfm}procedure TFormTime.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
     if not (Key in ['0'..'9','-',#8]) then
     begin
        Key:=#0;
        exit ;
     end ;
      if ((Tedit(Sender).SelStart in [4,7]) or (Tedit(Sender).SelStart >9))
        and (Key in ['0'..'9']) then
      begin
        key := #0;
        exit ;
      end ;
      if (not ( Tedit(Sender).SelStart in [4,7])) and (key ='-') then
      begin
        Key :=#0 ;
        exit ;
      end ;
      if (Tedit(Sender).SelStart in [4,7]) and (key='-') and
         (Copy(Tedit(Sender).Text,Tedit(Sender).SelStart,1) ='-') then
      begin
        Key :=#0 ;
        exit ;
      end ;
      if (Key =#8) and
      (Copy(Tedit(Sender).Text,Tedit(Sender).SelStart,1) ='-') and
      (Copy(Tedit(Sender).Text,Tedit(Sender).SelStart+1,1) <>'')
      then
         Key :=#0  ;
    end;procedure TFormTime.Edit1Exit(Sender: TObject);
    var ds :TDateTime ;
    begin
      try
        ds:=StrToDate(TEdit(Sender).Text);
        TEdit(Sender).Text :=FormatDateTime('yyyy-mm-dd',ds);
        if TEdit(Sender).Name = 'Edit1' then
          IsTime1:='Edit1'
        else
          IsTime1:='Edit2';
      except
        TEdit(Sender).Text :=FormatDateTime('yyyy-mm-dd',date);
        if TEdit(Sender).Name = 'Edit1' then
          IsTime1:=''
        else
          IsTime1:='';
        Application.MessageBox('日期格式输入不正确,正确日期格式为2004-01-01','提示',0) ;
        TEdit(Sender).SetFocus ;
      end ;end;procedure TFormTime.FormShow(Sender: TObject);
    begin
       IsTime1:='';
       IsTime2:='' ;
    end;procedure TFormTime.Button1Click(Sender: TObject);
    begin
      if (Trim(Edit1.Text)<>'') and (Trim(Edit2.Text)<>'') then
      begin
        Edit1Exit(Edit1);
        Edit1Exit(Edit2);
        if (Trim(IsTime1)<>'') and (Trim(IsTime1)<>'') then
        begin
          StaDate := Edit1.Text ;
          EndDate := Edit2.Text ;
          Close ; 
        end ;
      end
      else
      begin
        Application.MessageBox('请输入开始时间及结束时间','提示',0);
      end ;
    end;procedure TFormTime.Button2Click(Sender: TObject);
    begin
      Close ;
    end;procedure TFormTime.FormCreate(Sender: TObject);
    begin
      Edit2.Text := FormatDateTime('yyyy-mm-dd',Date);
      Edit1.Text := FormatDateTime('yyyy-mm-dd',incmonth(Date,-1));
    end;end.