背景是这样的,当一个edit失去焦点时(onexit)事件,我对其中的内容进行了检验,当输入不正确时(如为空)我就弹出一个提示信息,并将焦点再次放在这个edit上,但这个界面上同时有一个“退出”的按扭,当按下这个按钮时,就不必要进行检验了,直接退出就好,但现在的情况是如果不在edit里面输入正确的值,就退不出来,用户不满意!我就想在edit失去焦点时,先检验一下是不是因为“退出”按钮按下了,如果是,那么我就不再对其中的内容进行检验,直接退出就好了。

解决方案 »

  1.   

    可以这样来,假如你的退出的按钮的名字为‘BtnClose’,那么就这样:
    if FindVCLWindow(mouse.CursorPos).Name = 'BtnClose' then
    Exit;
    if Edit1.Text = '' then
    begin
      ShowMessage('can''t exit!');
      Edit1.SetFocus;
    end;
      

  2.   

    我也提供一个方法:如果你的退出按钮为"BtnClose".那么在你需要内容检验的Edit失去焦点(onexit event触发)时,只要多加一个if条件:      if not BtnClose.Focused then
                  {检验Edit数据正确与否的代码}
          
      

  3.   

    if not Bt_cancel.Focused  then
      

  4.   

    大家辛苦了,谢谢,
    我再去试试大家的方法,不过我后用将退出的按钮改为 speedbutton后这个问题也得到了比较好的解决,好象是speedbutton不会去占用别的控件的焦点吧。
    结贴。