处理MDI父窗体的OnMouseWheel事件procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if WheelDelta>0 then begin self.ActiveMDIChild.Top:=self.ActiveMDIChild.Top+10; end else self.ActiveMDIChild.Top:=self.ActiveMDIChild.Top-10;end;
to wdonghai(小王) 兄弟的代码实现的是子窗体整体在父窗体内上下移动 我的意思是在子窗体内部实现上下滚动 大家不妨试一试,如果子窗体上如果有滚动条,滚轮是不起作用的, 只有通过鼠标点击或托拽滚动条才能让窗体里的控件上下滚动
在MDI子窗体的鼠标滚轮事件里进行处理procedure TForm2.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin if WheelDelta>0 then sendmessage(handle,WM_VSCROLL,SB_PAGEDOWN,0) else sendmessage(handle,WM_VSCROLL,SB_PAGEUP,0) end;
怎麼 滚 法??是mdi子窗體上下移動???
照理说应该是可以的呀
看来窗体的上下移动是通过一次性重绘全部控件实现的,现在只有这个想法,还在vcl
里求证,大家看看有没有其他的解决之道吧
http://community.csdn.net/Expert/topic/3225/3225370.xml?temp=.7298242
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
if WheelDelta>0 then
begin
self.ActiveMDIChild.Top:=self.ActiveMDIChild.Top+10;
end
else self.ActiveMDIChild.Top:=self.ActiveMDIChild.Top-10;end;
兄弟的代码实现的是子窗体整体在父窗体内上下移动
我的意思是在子窗体内部实现上下滚动
大家不妨试一试,如果子窗体上如果有滚动条,滚轮是不起作用的,
只有通过鼠标点击或托拽滚动条才能让窗体里的控件上下滚动
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
if WheelDelta>0 then
sendmessage(handle,WM_VSCROLL,SB_PAGEDOWN,0)
else
sendmessage(handle,WM_VSCROLL,SB_PAGEUP,0)
end;
可行,谢谢