紧急,紧急!

laurecn 2002-10-18 08:41:43
请问各位:
如何实现Vb中CausesValidation功能,在Delphi中;
也就是说在一个窗体中如何在点击“关闭”按钮时,不触发其他控件的OnExit属性,从而不进行有效性检验。我说的是点击窗体上自己放置的“返回”“关闭”之类的按钮
谢谢!
...全文
35 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
laurecn 2002-10-22
  • 打赏
  • 举报
回复
明白了,谢谢,马上结帖
qtercel 2002-10-21
  • 打赏
  • 举报
回复
引用“点击关闭按钮时,校验代码没有执行完呢,所以根本就不会执行关闭按钮中的任何代码”??????
你是不是用线程去做的?校验代码和关闭的事件写在两个线程里了?

如果不是的话,则没有办法退出,必须等到校验代码的程序结束后,因为如果你没有启一个新线程,则操作系统会把所有的程序都放在主线程里去执行,所以你必须等到上一个事件执行完后才能再对下一个事件进行处理。系统是不会同时为一个线程中的不同事件“同时”分配CPU时间的。

如果你是用的是多线程,则可以实现,但是要考虑是否有必要和是否应该用。对于数据校验不建议用。
laurecn 2002-10-20
  • 打赏
  • 举报
回复
点击关闭按钮时,校验代码没有执行完呢,所以根本就不会执行关闭按钮中的任何代码,这样也就没有办法退出了,请问还有没有其他的方法呀
laurecn 2002-10-19
  • 打赏
  • 举报
回复
这样问题并不能解决呀
我看了,不行的呀
laurecn 2002-10-18
  • 打赏
  • 举报
回复
但是我是在点击关闭之前,不能执行关闭的代码,就要检测其他的有效性的呀
blazingfire 2002-10-18
  • 打赏
  • 举报
回复
什么ZZ
Borlandor 2002-10-18
  • 打赏
  • 举报
回复
好办,在点击“关闭”按钮时,将其他控件的Enabled := FALSE.
Drate 2002-10-18
  • 打赏
  • 举报
回复
还是不明白你的意思
qtercel 2002-10-18
  • 打赏
  • 举报
回复
设置一个全局变量boolPriSign=true
在OnExit事件里
if boolPriSign then
begin
校验
end;
在"关闭"事件里
boolPriSign:=false;
tobelost 2002-10-18
  • 打赏
  • 举报
回复
我的办法用简单的两个Edit时可以通过,两过程代码如下。
procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Bln = True then
Exit
else
ShowMessage('Bad Method!');
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Bln := True;
if MessageBox(Application.Handle,'Really Exit?',
'OnClose',mb_YesNo+mb_IconQuestion) = mryes then
begin
Action := caHide;
Application.Terminate;
end
else
Action := caNone;
Exit;
end;

不过你的程序也许就不同了。
tobelost 2002-10-18
  • 打赏
  • 举报
回复
试试吧:
全局BlnOnClose变量一个,
在窗口OnClose过程中,把BlnOnClose设置为真,
在控件的OnExit过程中,
if BlnOnClose = True then
Exit
else
{你的控件失去焦点的代码。};
laurecn 2002-10-18
  • 打赏
  • 举报
回复
各位
该如何做呀
没有人知道么

5,930

社区成员

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

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