gpt4 book ai didi

delphi - 将 TWebBrowser 转换为 TWinControl

转载 作者:行者123 更新时间:2023-12-03 18:17:39 25 4
gpt4 key购买 nike

谁能告诉我为什么第二次转换在 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 父属性正常,而第二个转换却没有?

谢谢

最佳答案

第一个转换不使用检查,它假定程序员是正确的并继续。第二个 Actor 使用一些完整性检查。 (如果转换无效则引发异常)。我认为在这种情况下,编译器会因为类似的命名属性而感到困惑。它甚至可能是一个过于热情的优化器。

至少,

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

有效。所以有规避。

关于delphi - 将 TWebBrowser 转换为 TWinControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/316949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com