1.在窗体的public里写procedure WmMouseSheel(var msg:TWMMOUSEWHEEL);message WM_MOUSEWHEEL;函数。
具体的实现部分如下:
procedure TMapChildFrm.WmMouseSheel(var msg: TWMMOUSEWHEEL);
var
pt: TPoint;
begin
GetCursorPos(pt); //{这是获取的相对于屏幕的坐标}
pt := ScreenToClient(pt); //{转换成本地坐标}
if (pt.X>ScrollBox1.Left)
and(pt.X<ScrollBox1.Left+paintbox1.Width)
and(pt.y>ScrollBox1.Top)
and(pt.y<ScrollBox1.Top+paintbox1.Height) then
begin
if msg.WheelDelta>0 then
begin
Zoom(@drawdata, 2);
AutoFillMap;
repaint;
end
else
begin
Zoom(@drawdata, 1 / 2);
AutoFillMap;
repaint;
end;
end;
end;(已实践)
2.继承paintbox,写个滚轮事件。(未实践);