当我从Button WebBrowser1.Navigate('www.google.com');
事件中调用OnClick
时,例如:
procedure TForm4.Button1Click(Sender:TObject);
begin
WebBrowser1.Navigate('www.google.com');
end;
网页显示在WebBrowswer1
。
但是,如果我制作自己的程序,例如:
procedure MyProcedure;
var
WebBrowser1:TWebBrowser;
begin
WebBrowser1.Navigate('www.google.com');
end;
然后尝试从Button OnClick
事件调用此过程,我收到访问冲突错误。
只是想知道,为什么当Delphi为我制作程序时它会起作用,但是当我自己编写程序时它不起作用?我该如何纠正这个问题,或者我必须在程序中编写哪些代码才能使其正常工作?
答案 0 :(得分:1)
在第一段摘录中,您已在IDE设计器中向表单添加了TWebBrowser
控件。因此,VCL框架为您实例化控件。使其成为表单的子控件,并应用使控件正常运行所需的所有步骤。
在第二段摘录中,设计师没有形式,也没有添加任何控件。您声明了一个局部变量WebBrowser1
,您没有初始化它。没有创建浏览器控件,任何使用未初始化变量WebBrowser1
的尝试都会导致未定义的行为。运行时错误几乎是不可避免的。
如果要更正此问题,则需要实例化TWebBrowser
控件的实例,正确设置其父级,并采取VCL为您执行的所有其他步骤。