在form上放了,tedit,tmemo,tbutton等控件,现在我想在form上拦截他们的一些消息,比如CM_EXIT,CM_ENTER等消息,请问如何可以拦截到呢?
我重载了form的WndProc也不行,因为这些消息时直接发给控件的,不是发给tform;
用TapplicationEvents也不行。
说明一下,不能重载控件的WndProc,因为窗体太多控件,而我要拦截所有控件的CM_EXIT,CM_ENTER等消息。我的目的就是想在每个控件失去焦点的时候进行一些检查操作。THANKS

解决方案 »

  1.   

    这些控件都有一个onexit事件,如果只是“想在每个控件失去焦点的时候进行一些检查操作”,那么在onExit中处理就够了
      

  2.   

    说明一下,不能重载控件的WndProc,因为窗体太多控件,而我要拦截所有控件的CM_EXIT,CM_ENTER等消息。
    在onexit事件也是一样啊,我窗体上有十几个控件,还会增加,我总不能每一个控件都在onexit中处理,是否很烦阿。
    我就是想在一个地方集中处理,才想拦截消息的。thanks
      

  3.   

    如果处理工作相同,把一个TnofityEvent类型的事件复制给不同控件的onExit就可以了。意思就是都指向同一个Tnotifyevent的过程。如果处理不相同,你有很多控件,就是截获消息,还不是要一个一个来做。
      

  4.   

    恩,你说的对,我也知道你的意思。
    但是,现在有一个问题,就是如果过几天,有新人来在这个窗体上新增加代码,新控件,如果他不清楚设计,是否就忘记了新增onexit事件阿,是否就有bug产生了?
    这不是我自己一个人开发的东西,还会有第三,第四期,到时候你都找不着原来设计的人了,或者是设计书了,则么办呢?
    另外,太多的控件,太多的onexit本身就是不太好的编程风格阿。thanks
      

  5.   

    还有,忘记说了,onexit事件不是全部相同的,各个控件可能有自己的独立的功能代码,当然,有一部分是相同的功能。thanks