放2个TEdit,edit1,edit2,在edit1.onexit中写showMessage('...');
procedure TForm1.Edit1Exit(Sender: TObject);
begin
  showMessage('...');
end;
运行.....
1.首先在edit1中随便写的什么,使他获得焦点.
2.然后用鼠标(注意是鼠标)点击edit2,这时会弹出Message.
3.用鼠标点Message上的确定
你会发现光标在edit2上.但是用键盘却输入不了任何值.
请问如何让edit2能正常输入值(用鼠标再点edit2的方法不算,用Tab键也不算=.=!)                                谢谢!
个人感觉是鼠标的onClick被showMessage()打断了....

解决方案 »

  1.   

    Delphi的bug
    但是,你的写法也有问题,既然edit1.onexit要showmessage,那一般是edit1输入错误,应该把焦点还给edit1才对:
    edit1.SetFocus;
    edit1.SelectAll;就是说,按正规的思路来,是不会有问题的
      

  2.   

    在showmessage后面加上这个。
    mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
    因为mouse的Down事件被相应了,而Up事件则由于showmessage导致没有接收到。自己模拟一个Up事件就行。
      

  3.   

    如果你实在想实现自己的想法就这样:
    showmessage( 'ok');
    postmessage( edit2.Handle, WM_LBUTTONUP, 1, 1 );