想用edit做个日期框,中间那一横怎么搞?
比如点击某edit,则会出现" - " 这样可以输入2008-03这个样子.也就是中间那一横是一直都有的.前面四个空格,后面2个空格.中间的这一横永远不能删除掉.比如我输入2008,则光标会自动跳过中间的一横,这样就直接输入月份.
这个怎么作?不要用maskedit的.
比如点击某edit,则会出现" - " 这样可以输入2008-03这个样子.也就是中间那一横是一直都有的.前面四个空格,后面2个空格.中间的这一横永远不能删除掉.比如我输入2008,则光标会自动跳过中间的一横,这样就直接输入月份.
这个怎么作?不要用maskedit的.
解决方案 »
- 如何建立一个这样的动态连接库
- 怎么样用dephi设置word为只读不能对文档内容进行删除与修改(急急)
- 把菜单换了一个FORM就出了很多问题,改了半天还不成功
- fastreport实现WEB应用中报表,共同探讨
- 那儿有delphi6.0的中文帮助下载?谢谢。
- 如何实时的判断在dbgrid中的数据输入的是否合法。UP有分!
- 窗体中放了很多控件,在窗体显示时这些控件一个一个地显示,好像很慢哦!哪位大哥能解决?
- 请问日期型字符如何定义??
- 我的SQL语句问题,怎样取得INTEGER和LONGINT型?真急,在线等了!
- 为什么我报表时的PageFooter显示不出来?
- 谁能给我讲一下从数据库填充TreeView的(通过递归)的思路
- 工作了,散分!
在KeyPress事件中写判断,
简单的方法是,当输入了4个字符后
自动给加上-,例如输入2008
当输入8后,在代码中自动给加上-变
成了2008-
在月的时候,只要输入3或以上就变成了
2008-03-
日期也一样
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;