我有一个用Delphi 7编写的ActiveForm,包含在一个可调整大小的<object>
中。
调整大小的工作正常,但在100%以外的浏览器缩放级别,表单会为浏览器大小的每次更改获取两个调整大小事件。第一个事件是缩放像素大小,第二个事件是实际像素大小。这会导致非常恼人的闪烁,因为控件会以2/3大小重新绘制(例如,如果缩放为150%),然后再以正确的大小重新绘制。
如果缩放率为100%,则不会发生这种情况 - 每次更改都会触发一次调整大小事件。
我观察到与XP上的IE8和W7上的IE11相同的行为。
我非常高兴缩放不缩放ActiveForm的实际外观,但希望消除虚假调整大小事件和闪烁。可以这样做吗?
(我知道它的旧技术,但请注意不要发表评论)
使用更多信息进行编辑:
@SertacAkyuz - 感谢您的回复并对延迟跟进道歉。
你是对的,TActiveForm没有收到调整大小的事件。
我的主要形式是TMainWnd,它是TActiveForm,IActiveFormX和IPersistPropertyBag的子类。
它包含一个带有alClient对齐的TNotebook。
反过来,笔记本页面包含一个带有alClient对齐的TPanel。这个TPanel是我附加了一个OnResize处理程序。此处理程序只是将面板的宽度和高度预先设置为状态栏simpletext。
e.g。随着浏览器放大IE11设置为125%,最大化刚刚给我(1321,674)紧随其后(1650,842)。同样地,这次恢复给了我(1022,562),接着是(1277,702)。控件会以较小的尺寸重新绘制,然后再以较大的尺寸重新绘制。拖动浏览器窗口的一角时,这一点更加明显,因为每次小的尺寸变化都会导致重绘较小的错误&#34;大小然后再次以正确的大小重绘。我们可以忍受它,但如果可能的话,克服它会很好。