这使我原来的问提:如果窗体被控件遮住,怎样使窗体的事件被响应???我有一个基类窗体,其中定义了一个事件,可是再子类中窗体被控件完全挡住了,如何让基类窗体中的事件被响应呢??如:TAframe = class(frame)
procedure keyprss(var message: Tmessage);message WM_KEYPRSS;
end;TBframe = class(TAframe);
memo1:Tmemo;
end;
(上面只是例子,随手写的)
如果memo和窗体一样大就无法响应keyprss事件了,请问个位大虾有何高见,先谢谢了。
最好能再基类中实现,这样的话类的继承才有意义,先谢谢了
分不够再加。各位大虾都说KeyPreview=Ture;就可以,可是这个答案不够通用,
我希望更加通用一点,不是tform类也可使用。比如,tframe,tpanel等等。这些类没有keypreview属性。我开这个贴,希望大家可以讨论一下
procedure keyprss(var message: Tmessage);message WM_KEYPRSS;
end;TBframe = class(TAframe);
memo1:Tmemo;
end;
(上面只是例子,随手写的)
如果memo和窗体一样大就无法响应keyprss事件了,请问个位大虾有何高见,先谢谢了。
最好能再基类中实现,这样的话类的继承才有意义,先谢谢了
分不够再加。各位大虾都说KeyPreview=Ture;就可以,可是这个答案不够通用,
我希望更加通用一点,不是tform类也可使用。比如,tframe,tpanel等等。这些类没有keypreview属性。我开这个贴,希望大家可以讨论一下
procedure Tform1.memo1keydown(……);
begin
sendmessage(form1.handle,WM_KEYDOWN,key,0);
end;
begin
if IsChild(Form1.Handle,Msg.hwnd) and (Msg.message=WM_CHAR) then
Form1.Perform(Msg.message,Msg.wParam,Msg.lParam);
end;