当前位置:  开发笔记 > 程序员 > 正文

将TWebBrowser转换为TWinControl

如何解决《将TWebBrowser转换为TWinControl》经验,为你挑选了1个好方法。

任何人都可以告诉我为什么第二次演员无法在Delphi 7中编译?

var
  WebBrowser: TWebBrowser;
begin
  WebBrowser := TWebBrowser.Create(Self);
  TWinControl(WebBrowser).Parent := Self;
  (WebBrowser as TWinControl).Parent := Self; // fail here
end

TWebBrowser中的Parent是一个只读的IDispatch属性,但为什么第一个转换看到TWinControl父属性ok,但第二个看不到?

谢谢



1> Toon Krijthe..:

第一个演员使用没有检查,它假定程序员是正确的继续.第二个演员使用了一些健全性检查.(如果演员表无效,则导致异常).我认为在这种情况下,编译器因为命名属性一样而感到困惑.它甚至可能是一个过于激进的优化者.

至少,

var
  wc : TWinControl;
begin
  wc := (WebBrowser as TWinControl);
  wc.Parent := Self;
end;

作品.所以有规避.

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有