如何在form的onshow事件里关闭该form?

8341 2002-08-06 01:49:52
在onshow事件里,发现不符合要求,不想让它显示了,可是使用close不行啊,各位有何良策?
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tata1 2002-08-07
  • 打赏
  • 举报
回复
在onshow里关闭Form不太好。

newform := TNewForm.Create(Self);
try
if {出错} then
raise Exception.Create('xx错误');
newform.Show;
except
newform.Free;
end;

dragonfox 2002-08-06
  • 打赏
  • 举报
回复
通常你在OnCreate或Onshow里关闭窗体
会出保护性错误,这里用发消息的方法

begin
messagedlg('将要关闭', mtInformation, [mbOK], 0);
PostMessage(self.handle, WM_CLOSE, 0, 0);
Screen.Cursor := crDefault;
end

---Delphi之未经证实的葵花宝典version 2.1

shsandbeah 2002-08-06
  • 打赏
  • 举报
回复
PostMessage(self.Handle,WM_CLOSE,0,0);
应该没问题,在你的机器上试试。
在我机器上是没问题的,就写在OnShow事件中
沧-海-桑-田 2002-08-06
  • 打赏
  • 举报
回复
OnShow事件中是不能关闭的
shsandbeah 2002-08-06
  • 打赏
  • 举报
回复
PostMessage(self.Handle,WM_CLOSE,0,0);
应该没问题,在你的机器上试试。
danyanpi 2002-08-06
  • 打赏
  • 举报
回复
既然不符合要求,为什么还要显示它?可以不开启该窗口呀!
luoweicaisd 2002-08-06
  • 打赏
  • 举报
回复
先判断是否可create,再create啊,在onshow中是关不了的,在oncreate可以
推荐一个国人编写的、超牛的、基于jQuery插件式、监听模式(无侵入)的html页面form表单通用验证框架: [b]formValidator[/b] 它能监听到所有控件类型、所有数据格式,还有ajax异步验证功能(例如用户注册时去数据库查询以检查有没有重复)。消息提示有多种模式,例如在控件旁边显示消息、弹出式消息。下面提供一样注册页面验证示例: Html的form表单: [code=HTML] * 用 户 名: * 密  码: * 确认密码: * 电子邮件: * 验 证 码: [/code] 上面每控件后面都一个标签是用来显示消息的。 Html的JavaScript: [code=HTML] $(document).ready(function(){ //告诉formValidator框架要验证userReg这个表单,如果提交时还有错误,则弹出对话框通知 $.formValidator.initConfig({formid:"userReg",onerror:function(msg){alert(msg)}}); //验证用户名这个字段,同时还要求到服务器验证是否有重复值 $("#username").formValidator({onshow:" ",onfocus:"用户名至少4个字符,最多10个字符",oncorrect:"该用户名可以注册"}).inputValidator({min:4,max:48,onerror:"你输入的用户名非法,请确认"}).regexValidator({regexp:"username",datatype:"enum",onerror:"用户名格式不正确"}).ajaxValidator({ type : "get", url : "/userValidator.do", success : function(data){if( data == "1" ){return true;}else{return false;}}, buttons: $("#button"), error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");}, onerror : "该用户名不可用,请更换用户名", onwait : "正在检查此用户名是否被人注册,请稍候..." }); //验证密码 $("#password").formValidator({onshow:" ",onfocus:"密码不能为空",oncorrect:"密码合法"}).inputValidator({min:1,empty:{leftempty:false,rightempty:false,emptyerror:"密码两边不能有空符号"},onerror:"密码不能为空,请确认"}); //验证确认密码,同时要求与第一交密码一致 $("#repassword").formValidator({onshow:" ",onfocus:"两次密码必须一致哦",oncorrect:"密码一致"}).inputValidator({min:1,empty:{leftempty:false,rightempty:false,emptyerror:"重复密码两边不能有空符号"},onerror:"重复密码不能为空,请确认"}).compareValidator({desid:"passWord",operateor:"=",onerror:"2次密码不一致,请确认"}); //验证电子邮件,同时要求数据库中必须唯一 $("#email").formValidator({onshow:" ",onfocus:"邮箱6-100个字符,输入正确了才能离开焦点",oncorrect:"该电子信箱可以注册"}).inputValidator({min:6,onerror:"你输入的电子邮箱不合格,请确认"}).regexValidator({regexp:"^([\\w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([\\w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$",onerror:"你输入的邮箱格式不正确"}).ajaxValidator({ type : "get", url : "/emailValidator.do", success : function(data){ if( data == "1" ){return true;}else{return false;}}, buttons: $("#button"), error: function(){alert("服务器没有返回数据,可能服务器忙,请重试");}, onerror : "该电子信箱已被注册,请更换一个", onwait : "正在对电子信箱唯一性进行合校验,请稍候..." }); //对验证码是否输入进行验证 $("#valicode").formValidator({onshow:" ",onfocus:"输入旁边图片上的数字"}).inputValidator({min:3,onerror: "请输入验证码!"}); }); [/code] 这是一个典型的注册表单,form中没有侵入作何元素。而formValidator则通过jQuery的监听模式实现对form表单的验证。并对username、email字段实现无刷新服务器验证。 压缩包中含有demo,demo就是文档,很容易使用

5,933

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧