【发布时间】:2010-12-03 03:10:54
【问题描述】:
我想写一个使用鼠标滚轮进行缩放的组件 类似于 Google 地球。
我有一个使用 onMouseWheel 的组件,我有属性 MaxZoom MinZoom 和 Zoom 有一个更好的选择,即 StretchDraw 与位图我试图在表单中获取组件区域的位置
据我所知,我必须找到每个父级,直到找到 tCustomform 并添加所有组件的顶部和剩下的组件以获取对象位置以找到我的对象位置。有没有更好的方法
一旦我有了位置,如果鼠标在我的对象上,我可以从鼠标光标位置缩放地图以及从哪里缩放。
有人看过代码吗
【问题讨论】:
-
我不认为这可以在组件中可靠地完成,因为鼠标滚轮消息并不总是转到鼠标下方的窗口。根据我的观察,轮子消息有时仅发送到“表单”窗口,有时仅发送到鼠标下方的窗口,有时它们会发送到两者!我对该问题的解决方法是将消息从表单窗口转发到相关的子组件,并在子组件中编写了一些代码来尝试避免重复激活。问题是,我的解决方案需要表单的协作,所以它不是“独立的”。
标签: delphi mousewheel