首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 简单问题,想用edit做个日期框,中间那一横怎么搞? [已结贴,结贴人:gxxc2008]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gxxc2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-18 15:18:32 楼主
    想用edit做个日期框,中间那一横怎么搞?
    比如点击某edit,则会出现"    -  " 这样可以输入2008-03这个样子.也就是中间那一横是一直都有的.前面四个空格,后面2个空格.中间的这一横永远不能删除掉.比如我输入2008,则光标会自动跳过中间的一横,这样就直接输入月份.
    这个怎么作?

    不要用maskedit的.
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenzhuo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 13:47:471楼 得分:14
    麻烦了点,你可以试一下
    在KeyPress事件中写判断,
    简单的方法是,当输入了4个字符后
    自动给加上-,例如输入2008
    当输入8后,在代码中自动给加上-变
    成了2008-
    在月的时候,只要输入3或以上就变成了
    2008-03-
    日期也一样
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenzhuo
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 13:49:432楼 得分:0
    Delphi(Pascal) code
    procedure TBillForm.edCashDateKeyPress(Sender: TObject; var Key: Char); begin case key of #48..#57: try if length(edCashDate.text) = 3 then begin if (StrToInt(edCashDate.Text + key) < 1995) or (StrToInt(edCashDate.Text + key) > 2050) then begin Abort; end else PostMessage((sender as Tedit).handle, wm_char, ord('-'), 0); end else if length(edCashDate.text) = 5 then begin if key >= '2' then begin edCashDate.Text := edCashDate.Text + '0'; edCashDate.selstart := length(edCashDate.Text); PostMessage((sender as Tedit).handle, wm_char, ord('-'), 0); end; end else if length(edCashDate.text) = 6 then begin if copy((edCashDate.Text + key), 6, 2) > '12' then begin Abort; end else PostMessage((sender as Tedit).handle, wm_char, ord('-'), 0); end else if length(edCashDate.text) = 8 then begin if key > '3' then begin edCashDate.Text := edCashDate.Text + '0'; edCashDate.selstart := length(edCashDate.Text); end end else if length(edCashDate.text) = 9 then begin if copy((edCashDate.Text + key), 9, 2) > '31' then begin Abort; end end except ErrorShow('请输入正确的日期'); end; #13: begin try if (strtoDate(Trim(edCashDate.Text))>strtoDate('2000-01-01')) then begin CashNo := Trim(edCashNo.Text); BuyDate := strtoDate(Trim(edCashDate.Text)); ModalResult := mrOK; if POSClass.WinType then close; end else ErrorShow('请输入正确日期.'); except ErrorShow('请输入正确日期.'); end; end; #27: begin modalResult := mrCancel; close; end; end; end;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gxxc2008
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 15:30:103楼 得分:0
    多谢回复.
    可是我想一开始就出现那一横吗?这个横固定不动.也不能删除.
    这样录入的人一看就知道是日期格式了.
    这样怎么能做吗?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gwhdaxia
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 16:14:074楼 得分:2
    自己继承一个TcustomEdit修改一下就可以了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • oushengfen
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 16:50:265楼 得分:2
    chenzhuo 方法对一般处理可以,但是不能达到日期的效果吧.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ronal212121
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 18:00:306楼 得分:2
    不用MaskEdit
    why?
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved