以下是我从http://delphi.about.com/cs/adptips2004/a/bltip0104_4.htm
下载的代码示例procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string) ;
var
sl: TStringList;
ms: TMemoryStream;
begin
WebBrowser.Navigate('about:blank') ;
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;
if Assigned(WebBrowser.Document) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTMLCode;
sl.SaveToStream(ms) ;
ms.Seek(0, 0) ;
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms)) ;
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end;
我使用的是RAD Studio XE5,编译器抱怨WebBrowser实例的ReadyState和Document属性。
因此,在我所来自的Java世界中,当Java Gods弃用某些API功能时,他们会在API中引用我应该做的事情。
这似乎不会发生在Delphi世界中。刚刚从API中删除了TWebBrowser类的ReadyState和Document属性。
我相信这里有人可以将这段代码变成现实。但是,我需要找到更改Delphi API问题的一般解决方案。这不是我第一次遇到这个。
另一个例子是TButton曾经有一个名为Caption的属性,现在称为Text。那个我不得不猜测自己。
所以我想我正在寻找的是Delphi API更新日志,最好在线提供......
我在哪里可以找到这样的东西?
答案 0 :(得分:4)
此代码示例是为VCL应用程序设计的。你已经把它放到FMX应用程序中了。通过切换到VCL应用程序解决问题。
那就是说,我无法推荐这段代码。它在Web浏览器控件上执行繁忙的等待!它包括对受到严重诽谤的呼吁,以及Application.ProcessMessages
。繁忙的循环只是等到文档加载完毕。该组件提供了一个在发生这种情况时触发的事件,即DocumentComplete
。
答案 1 :(得分:2)
当代码示例无法编译时,我从编译器中读取消息并检查我是否在uses
子句中包含了正确的单元。有时候我会参考文档,在极端情况下,我会对特定的库文件进行grep搜索,或者只是询问Delphi Gods,如果我当天感觉特别虐待狂。