判断是不是这个窗体
procedure Tfrmcheckin.FormCreate(Sender: TObject);
begin
Application.OnMessage:=self.AppMessage;
end;
procedure Tfrmcheckin.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if Msg.message = WM_KEYDOWN then
begin
if (Msg.wParam=vk_f1)then
begin
butdesk.click ;
exit;
end;
end;
按下F1就触发butdesk.click 这个事件。怎么能判断,我只在frmcheckin这个窗体出现时按下F1有效,其他窗体出现时按下F1无效
问题点数:50、回复次数:7Top
1 楼linzhengqun(风。我回来了)回复于 2005-10-16 16:57:52 得分 20
if Msg.Handle = frmcheckin.Handle then
...Top
2 楼senfore(来而不往非礼也!)回复于 2005-10-16 18:13:24 得分 5
二楼正解。。Top
3 楼cdsgajxlp(起名很难)回复于 2005-10-16 21:17:14 得分 5
高手说的对Top
4 楼shirleyttt(兔兔)回复于 2005-10-17 09:56:00 得分 0
procedure Tfrmcheckin.AppMessage(var Msg: TMsg; var Handled: Boolean);
begin
if (Msg.message = WM_KEYDOWN) and (Msg.hwnd = frmcheckin.Handle) then
begin
if (Msg.wParam=vk_f1)then
begin
butdesk.click ;
exit;
end;
end;
我这样试过,但在frmcheckin这个窗体,按下F1不发生任何事件,打开这个窗体后,关上,再开别的窗体,按下F1依然会出错Top
5 楼shirleyttt(兔兔)回复于 2005-10-17 10:13:10 得分 0
哦,是因为焦点在窗体上的EDIT,所以发出的消息不是frmcheckin.handlw而frmcheckin.edit1.handle,
怎么判断是不是 frmcheckin上所有控件发出的消息而不是其他窗体上的呢Top
6 楼abc3000(想想就烦)回复于 2005-10-17 10:26:40 得分 20
form的keypreview设置为trueTop
7 楼shirleyttt(兔兔)回复于 2005-10-17 10:36:17 得分 0
回复人: abc3000(想想就烦) ( ) 信誉:106 2005-10-17 10:26:00 得分: 0
form的keypreview设置为true
楼上的办法,好象无效的样子:(Top




