如何在网站完成加载/下载过程之前隐藏WebBrowser?

时间:2014-03-24 14:12:12

标签: delphi hide twebbrowser

我想知道如何在网站加载过程完成之前隐藏WebBrowser

另外,我使用Panel1和WebBrowser ON TOP。为什么?好吧,这样,我可以像我想要的那样为WebBrowser设置Panel1的大小和位置,然后将WebBrowser放在Panel1的顶部,并将整个大小(WebBrowser的宽度,高度)设置为+4 px。之后我将WebBrowser(Left,Top)的大小调整为-2px,这样我就可以删除WEBBROWSER BORDERS :)将WebBrowser的高度和宽度调整为-2px后,WebBrowser的大小与Panel1相同,没有边框...

现在,回到主题 - 我尝试设置TFMain.WebBrowser1NavigateComplete2事件,但使用FMain.Panel1.Visible:=True;(在Panel1设置中,我将Visible选项设置为False,因此Panel1和WebBrowser都是不可见的) ,但它不起作用。 Panel1和WebBrowser始终不可见。

如何在WebBrowser完成网站下载后使Panel1可见?

还有一件事:因为WebBrowser在Panel1的TOP上,当我将Panel1 Visible设置为False时,WebBrowser也会变得不可见:)

那么,任何人都可以帮助我吗?谢谢......

1 个答案:

答案 0 :(得分:0)

如果您只有一个TWebBrowser实例,该实例已在设计时投放,您可以使用以下代码进行初始化:

procedure TFMain.KeepWebBrowserInvisible;
begin
  WebBrowser1.Align := alNone;
  WebBrowser1.Left := -WebBrowser1.Width - 1;
  WebBrowser1.Top := -WebBrowser1.Height - 1;
  WebBrowser1.OnDocumentComplete := WebBrowser1DocumentComplete;
end;

procedure TFMain.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; const Url: OleVariant);
begin
  if pDisp = WebBrowser1.DefaultDispatch then
  begin
    // The document or the main frame has been fully downloaded
    WebBrowser1.Align := alClient; // Fill the Panel1
  end;
end;

重要:如果浏览器实例是动态创建的,那么当您打算显示浏览器时,应添加Panel1.InsertControl(WebBrowser1)