菜鸟请问大侠maskedit控件的使用,我把他的属性设为short time格式,可是当我输入55:55也好使,我想让他最大只可以输入24:59,怎么办啊?(2

  • 主题发起人 主题发起人 xiaoxiami0
  • 开始时间 开始时间
X

xiaoxiami0

Unregistered / Unconfirmed
GUEST, unregistred user!
菜鸟请问大侠maskedit控件的使用,我把他的属性设为short time格式,可是当我输入55:55也好使,我想让他最大只可以输入24:59,怎么办啊?(20分)<br />菜鸟请问大侠maskedit控件的使用,我把他的属性设为short time格式,可是当我输入55:55也好使,我想让他最大只可以输入24:59,怎么办啊?
 
自己判断
 
菜鸟不会判断才向高手们请教。
 
在 onExit 时间中要么逐个判断 HH、MM、SS,
要么尝试将其转换成Time,如果转换失败,就提示错误,并 Mask.SetFocus,强迫其重新输入。
 
在OnKeyPress事件中,每写一个字符就进行判断,我写过一个输入IP的控件就是那么做的。
用COPY可以拆分字符串。
 
edtGoTime中由用户输入时间,函数返回时间在GoTime中,Result为True,时间有效,
为假,时间无效,请求重新输入,要求判断调用这个函数即可。

BTW:多数格式有效性问题都可以这样解决,用try/except/end就行

function GetGoTime(var GoTime: TTime): Boolean;
begin
try
GoTime := StrToTime(edtGoTime.Text);
edtGoTime.Text := TimeToStr(GoTime);
Result := True;
except
Result := False;
end;
end;
 
唉,不要用TMaskEdit了,用TDateTimePicker吧,也是Delphi带的,将Type设为Time即
可显示和输入时间。获取其时间是DateTimePicker1.Time,类型是TDateTime,
可以用TimetoStr(DateTimePicker1.Time)将其转换为字符串型。
 
多人接受答案了。
 
后退
顶部