新!日期处理控件。 不使用任何其它日期控件,直接在 TEdit 中实现, 只能输入日期格式 如: 2007-1-10 月份不能大于12,天最好能控制不能超过月的最大天。 如何实现,有没有代码???
解决方案 »
- 各位前辈,请教一个关于窗体置顶的问题
- 基类为TWincontrol的,有什么好方法透明背景?
- TWebBrowser的问题,在点击超链接时怎样让页面在TWebBrowser里显示,而不是打开ie显示?
- 好久没来了,散点分分。。
- 我的一个开源项目,欢迎大家参与。
- 有用过INDY,SAKMAIL,MAIL2000n控件做过邮件接收程序的朋友请进来
- 请大家共同来帮我想想办法,非技术性问题!
- 老家被盗,损失了上万元财物,让我逮到那狗娘养的小偷一定废了那丫的!
- 如何定制(动态生成)报表?分数还可以考虑?急!急!急!
- 在用TREEVIEW时,ADD()和ADDCHILD()有什么区别?
- 取得TImage加载文件名
- 求天心sunlikeERP 数据库表结构明细,谢!
function isdate(str: string): Boolean;
const datastr = '1234567890-';
var i: integer;
datestrlist: tstringlist;
begin
Result := False;
if length(trim(str)) < 1 then exit;
for i := 1 to length(str) do
if (pos(str[i], datastr) < 1) then exit;
datestrlist := tstringlist.Create;
datestrlist := split(str, '-');
try
with datestrlist do
begin
if Count <> 3 then exit;
if not isInteger(Strings[0]) then exit;
if not isInteger(Strings[1]) then exit;
if not isInteger(Strings[2]) then exit;
if (strtoint(Strings[0]) < 1500) or (strtoint(Strings[0]) > 5000) then exit;
if (strtoint(Strings[1]) < 1) or (strtoint(Strings[1]) > 12) then exit;
if (strtoint(Strings[2]) < 1) or (strtoint(Strings[2]) > 31) then exit;
end;
Result := true;
finally
datestrlist.Free;
end;
end;//这个函数基本能够实现,但是不能检查2-31这样的错误,你如果需要就加上吧,我用是够了。
begin
inherited;
if trim(Edit1.Text)='' then exit;
if not GF_Is_Date(Edit1.Text) then
begin
uf_Alert(''''+Edit1.Text+'''是无效的日期值!');
Edit1.Text:='';
Edit1.SetFocus;
end;
end;function GF_Is_Date(StrDate: String): Boolean;
var
s_Date: String;
begin
s_Date:= Trim(StrDate);
begin
try
StrToDate(s_Date);
result:= true;
except
result:= false;
end;
end;
end;
试试这个!
有个小缺点是,在输入时会有一条细线在控制你的输入