我有一个基类窗体,其中定义了一个事件,可是再子类中窗体被控件完全挡住了,如何让基类窗体中的事件被响应呢??如:TAframe = class(frame)
  procedure keyprss(var message: Tmessage);message WM_KEYPRSS;
end;TBframe = class(TAframe);
 memo1:Tmemo;
 end;
(上面只是例子,随手写的)
如果memo和窗体一样大就无法响应keyprss事件了,请问个位大虾有何高见,先谢谢了。
最好能再基类中实现,这样的话类的继承才有意义,先谢谢了
分不够再加。

解决方案 »

  1.   

    吧窗体的keypreview属性改为真就可以了
      

  2.   

    改keypreview为true好像来晚了  face
      

  3.   

    谢谢各位大虾得指点,但是这个不是我想要得答案,我希望更加通用一点,不是tform类也可使用。比如,tframe,tpanel等等。这些类没有keypreview属性。我另外开贴吧
      

  4.   

    http://expert.csdn.net/Expert/topic/1391/1391275.xml?temp=.8374445
      

  5.   

    很简单,对消息进行拦截处理即可!首先要知道该事件相应的消息!如OnKeyPress是WM_CHAR!然后利用Application.OnMessage,可以自己做procedure ApplicationMessage(var Msg: tagMSG;var Handled: Boolean);Application.OnMessage:=ApplicationMessage;也可利用ApplicationEvens控件的OnMessage事件!procedure TForm1.ApplicationMessage(var Msg: tagMSG;var Handled: Boolean);
    begin
    if IsChild(Form1.Handle,Msg.hwnd) and (Msg.message=WM_CHAR) then
      Form1.Perform(Msg.message,Msg.wParam,Msg.lParam);
    end;再提醒你一下,TPanel可没有OnKeyPress