ActiveForm在IE中不停的重画?请问为什么?(100分)

  • 主题发起人 主题发起人 liandian
  • 开始时间 开始时间
L

liandian

Unregistered / Unconfirmed
GUEST, unregistred user!
你好!我写了一个activeform,上面放了几个panel,什么操作也没有,为什么只是稍微拖动ie,
form的重画就非常严重,activeform的画面都变形了!我想自己处理OnPaint,
但ActiveForm的OnPaint的事件并没有被触发?
请教各位该如何解决呢?我觉得重画操作不应该有我作,而是系统自己会处理。
 
这是delphi的一个bug

将Delphi5安装目录下Borland/Delphi5/Source/Vcl/axctrls.pas文件考出,放在一个临时目录中。

用Delphi新建一个工程,保存在该临时目录中,在此工程中加入axctrls.pas(用Project菜单下的Add to Project...), 在Component List中,打开TActiveXControl下的Protected节点,双击SetObjectRects,则看到下面的代码

function TActiveXControl.SetObjectRects(const rcPosRect: TRect;
const rcClipRect: TRect): HResult;
var
WinRect: TRect;
begin
try
IntersectRect(WinRect, rcPosRect, rcClipRect);
FWinControl.BoundsRect := rcPosRect;
Result := S_OK;
except
Result := HandleException;
end;
end;

将FWinControl.BoundsRect := WinRect
中的 WinRect 换成 rcPosRect, 然后运行工程编译,将axctrls.dcu 文件考到Borland/Delphi5/lib及Borland/Delphi5/lib/Debug下,将原有文件覆盖即可.
 
接受答案了.
 
dana的办法解决不了问题吧?我试了,不起作用。
 
后退
顶部