请教关于录入时间的简单问题,附上本人的菜鸟办法。
本人想通过TEdit来解决日期的录入形式问题,但网上一直没找到合适的方法,今晚憋了1小时,只能用如下的方法解决,如高手们有简单的方法,请赐教。
var
Form1: TForm1;
numedit:integer;//实际输入或剩余多少字符。
implementation
{$R *.dfm}
procedure TForm1.FormShow(Sender: TObject);
begin
edit1.Text:=' - - ';//空的xxxx-xx-xx形式
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var sit:integer;//xxxx-xx-xx形式的日期字符串中numedit所在位置
var text:string; //xxxx-xx-xx形式的日期字符串
begin //#8 退格键
//sit : 12345678910
// : xxxx-xx-xx
//numedit: 1234 56 78
if not (key in ['0'..'9',#8,#13]) then
begin
key:=#0 ;
exit;
end;
if (numedit=0) and (key=#8) then exit;
if not( key=#13) then
begin
if (not (numedit =0)) and (key=#8) then
dec(numedit)
else
inc(numedit);
if (numedit > 4) and (numedit <7) then
sit:=numedit+1
else if (numedit >= 7) then
sit:=numedit+2
else
sit:=numedit;
if ( not (sit=0)) and (not (key=#8)) then
begin
text:=edit1.Text;
Text[sit]:=key;
edit1.text:=text;
end
else if (key=#8) then
begin
if (numedit <= 3) or (numedit = 5)
or (numedit = 7) then
begin
text:=edit1.Text;
Text[sit+1]:=' ' ;
edit1.text:=text;
end;
if (numedit = 4) then
begin
text:=edit1.Text;
Text[numedit+2]:=' ' ;
edit1.text:=text;
end;
if (numedit = 6) then
begin
text:=edit1.Text;
Text[numedit+3]:=' ' ;
edit1.text:=text;
end;
end;
end;
end;
实在是拿不到桌面上来的,望高手指正。
问题点数:20、回复次数:6Top
1 楼zqyouxg(墙头草)回复于 2003-12-04 00:14:16 得分 0
先设edit1的最大长度为10.Top
2 楼sailer_shi(孤独的我,孤单的走,孤单的活着,孤单呀)回复于 2003-12-04 08:45:09 得分 0
你要干什么用?Top
3 楼superhjw(黄锦云)回复于 2003-12-04 08:49:12 得分 0
晕。。。。
为什么不用MASKEDIT?
多此一举Top
4 楼outer2000(天外流星)回复于 2003-12-04 08:50:44 得分 10
为什么不用MASKEDIT?
也可以用DATETIMEPICKER来输入啊;Top
5 楼Little2000(rainy)回复于 2003-12-04 09:35:10 得分 5
用MaskEdit控件很容易实现的哦Top
6 楼lgqTiger(【老虎】(抵制日货...))回复于 2003-12-04 10:39:17 得分 5
Delphi不是有专用的时间输入控件吗?
你只需要把结果给格式化输出就行了!Top




