回 帖 发 新 帖 刷新版面

主题:关于日期输入的问题

在输入日期时,如何能使我在输入年份之后,会自动在年份之后加上“-”来做为与月份之间的分隔!

回复列表 (共14个回复)

沙发

在keypress里判断即可.

板凳

能不能具体点,我就是不知道在这里该怎么判断!?

3 楼

你是在一个什么样的控件里输入的?

4 楼

不知道你用的是什么控件............
你用一下MaskEdit试试吧......

5 楼

我用的是TEDIT,如果是MaskEdit那在KeyPree里怎么写呢?

6 楼

1、如果你用TEdit, 可以在KeyPress事件的处理过程里写:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  with TEdit(Sender) do
    if (Length(Text) = 4) or (Length(Text) = 7) then
      begin
      Text := Text + '-';
      SelStart := Length(Text)+1;
      end;
end;

2、如果用MaskEdit:(不过效果是始终显示-)

procedure TForm1.FormCreate(Sender: TObject);
begin
  MaskEdit1.EditMask := '9999-99-99;1; ';//设置其EditMask属性。
end;

3、直接用DateTimePicker控件,始终显示-

7 楼

这样啊,我先谢谢你了!!不过,我上次好像写得和你差不多,输好看份之后是会自动加个"-"的,但是如果输错了就删不了!

8 楼

1、尽量具体地说明自己的问题和自己实践的过程,可以节约帮助你的人的时间。如果你一开始就把你写过的代码贴出来(哪怕是顺便贴出来),何必浪费你我这么多的时间?

2、我不可能一下子给你一个十分丰富的代码,那需要你自己发动自己的思维。只有你仔细想一下为什么,你才有进步。

3、试一下下面的代码,是不是可以删除。

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  with TEdit(Sender) do
    if ((Length(Text) = 4) or (Length(Text) = 7)) and (not(Key=#8)) then
      begin
      Text := Text + '-';
      SelStart := Length(Text)+1;
      end;
end;


4、如果你还想继续提出新的问题,继续丰富下去,请一下子全部提出来。

5、适当地给帮助你的人评分,是一种做人的基本素质。虽然这分不代表什么。

9 楼

结贴了!

10 楼

还有一个小问题就是在输完年份之后不会立即显示“-”,只有等输月份的时候“-”才会显示在年份后面!有没有办法,在我输完年份之后就立即显示“-”。谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册