Application.OnMessage:= 放在主程序中对子程序部分无效(前面部分有效,红色无效) 如在子程序中有效。
不想分别放在子窗口中,另外前面部分是在主窗口中,对所以子窗口有效,在子窗口加了黄色部分,好象就把主窗口的ommessage屏蔽了,我就把红色部分放在主窗口中,但无效。又都放到子窗口中,绿色黄色部分都是有效的
现都想主程序中,或部分放在主程序中,目前只能分别放在子窗口中,太累。 if Msg.Message=WM_KEYDOWN then
begin
if (Msg.wParam=VK_RETURN) then Keybd_event(VK_TAB, 0, 0, 0);
end
else
if (Msg.message = WM_MOUSEWHEEL) then
for iii:=ComponentCount-1 downto 0 do
if ((Components[iii] is TDBGrid) and (Components[iii] as TDBGrid).Focused) then
begin
if Msg.wParam >0 then
SendMessage((Components[iii] as TDBGrid).Handle,WM_KEYDOWN,VK_UP,0)
else
SendMessage((Components[iii] as TDBGrid).Handle,WM_KEYDOWN,VK_DOWN,0);
Handled:=True;
end;
不想分别放在子窗口中,另外前面部分是在主窗口中,对所以子窗口有效,在子窗口加了黄色部分,好象就把主窗口的ommessage屏蔽了,我就把红色部分放在主窗口中,但无效。又都放到子窗口中,绿色黄色部分都是有效的
现都想主程序中,或部分放在主程序中,目前只能分别放在子窗口中,太累。 if Msg.Message=WM_KEYDOWN then
begin
if (Msg.wParam=VK_RETURN) then Keybd_event(VK_TAB, 0, 0, 0);
end
else
if (Msg.message = WM_MOUSEWHEEL) then
for iii:=ComponentCount-1 downto 0 do
if ((Components[iii] is TDBGrid) and (Components[iii] as TDBGrid).Focused) then
begin
if Msg.wParam >0 then
SendMessage((Components[iii] as TDBGrid).Handle,WM_KEYDOWN,VK_UP,0)
else
SendMessage((Components[iii] as TDBGrid).Handle,WM_KEYDOWN,VK_DOWN,0);
Handled:=True;
end;
begin
if Msg.wParam >0 then
SendMessage(Screen.ActiveForm.ActiveControl.Handle,WM_KEYDOWN,VK_UP,0)
else
SendMessage(Screen.ActiveForm.ActiveControl.Handle,WM_KEYDOWN,VK_DOWN,0);
Handled:=True;
end;