首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将TWebBrowser转换为TWinControl

将TWebBrowser转换为TWinControl
EN

Stack Overflow用户
提问于 2008-11-25 10:33:16
回答 1查看 1.2K关注 0票数 2

谁能告诉我为什么第二次强制转换不能在Delphi 7中编译?

代码语言:javascript
复制
var
  WebBrowser: TWebBrowser;
begin
  WebBrowser := TWebBrowser.Create(Self);
  TWinControl(WebBrowser).Parent := Self;
  (WebBrowser as TWinControl).Parent := Self; // fail here
end

TWebBrowser中的Parent是一个只读的IDispatch属性,但是为什么第一个强制转换可以看到TWinControl parent属性,而第二个不可以?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-11-25 11:02:10

第一种类型转换不使用检查,它假设程序员是正确的,并继续执行。第二次强制转换使用了一些健全性检查。(如果强制转换无效,则会导致异常)。我认为在这种情况下,编译器被混淆了,因为类似命名的属性。它甚至可能是一个过于夸张的优化器。

至少,

代码语言:javascript
复制
var
  wc : TWinControl;
begin
  wc := (WebBrowser as TWinControl);
  wc.Parent := Self;
end;

很管用。因此,这是一种规避。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/316949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档