这是delphi的一个bug
将Delphi安装目录下Borland/Delphi6/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/Delphi6/lib及Borland/Delphi6/lib/Debug下,将原有文件覆盖即可.