DBEdit是綁定某表的,對應一日期型字段,輸入數據時不想輸入如'-'的符號,直接輸入數字就行了,怎么樣實現?

解决方案 »

  1.   

    to geweiliang:你说的是修改操作系统的日期表达形式吗?怎样用代码实现?
      

  2.   

    为什么不要maskedit??非要dbedit不可吗?
      

  3.   

    选定DBEdit1的FieldName
    然后编辑它的MaskEdit属性,剩下的不用我教了吧
      

  4.   

    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;自己看一看;
      

  5.   

    函数可用 IsLeapYear 代替;
    Uses
      DateUtils;
      

  6.   

    比较直接的方法
    双击table(query),单击右键->Add fields->选那个日期字段->ok
    编辑它的Editmask为!9999/99/99;1;_    
    即可