用鼠标把焦点从Edit1切换到Edit2时,触发Edit1的OnExit,在OnExit事件中执行Applicatio.MessageBox,关闭提示框后,光标在Edit2上,但却不能输入,必须再点一下才可输入,请教高手如何解决,谢谢!

解决方案 »

  1.   

    不知道为虾米。。非得SETFOCUS两次才行    Application.MessageBox('ddd','dd',MB_OK);
        edit2.SetFocus;
        edit2.SetFocus;
      

  2.   

    问题是不能写Edit2.SetFocus,用鼠标点的有可能不是Edit2,而是Edit3,Edit4...
      

  3.   

    不一定是Edit2获得焦点才触发OnExit,也有可能是其它Edit控件
      

  4.   

    这样就可以了:
    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      Application.MessageBox('ddd','dd',MB_OK);
    end;procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      edit2.SetFocus
    end;
      

  5.   

    To ksaiy(消失在人海):
        可能是我没有描述清楚,不太明白写KeyDown有什么用,我的问题是,在Form上有多个Edit,在Edit1的OnExit中写了Application.MessageBox('ddd','dd',MB_OK); 焦点在Edit1上,如果用鼠标点其它Edit会触发Edit1的OnExit弹出提示框,点确定关闭提示框后,当前获得焦点的Edit不能输入,必须用鼠标点一下后才可以输入,我用笨办法甘甘基本实现了,但不太好
    Var
      aHandle: THandle;
    begin
      aHandle := GetFocus;
      Application.MessageBox('aa', '提示', MB_OK+MB_ICONINFORMATION);
      PostMessage(aHandle, WM_LBUTTONDOWN, 0, 0);
      PostMessage(aHandle, WM_LBUTTONUP, 0, 0);
      PostMessage(aHandle, EM_SETSEL, 0, MaxInt);
    end;
      

  6.   

    同意 ksaiy(消失在人海) 的看法
      

  7.   

    当前获得焦点的Edit不能输入,必须用鼠标点一下后才可以输入?? 还有这事情么。
      

  8.   

    to beyondtkl(大龙驹<无悔这一生 恩德汝>) 
        可以自己试一下呀,用键盘切换焦点没问题,用鼠标点就有这问题,请帮忙,谢谢!
      

  9.   

    Application.MessageBox('aa', '提示', MB_OK+MB_ICONINFORMATION);
    换成MessageDlg试试
      

  10.   

    呵呵,这是一个老问题了,Bug???,没见到过有什么太好的解决方法。