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=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;
可惜我是菜鸟,不知要写什么,又放在哪里。
我是菜菜鸟,提示一定请要具体,菜得就象没插电还以为电脑坏了一样。