在程序上设置计时器?

时间:2011-10-12 05:14:51

标签: delphi delphi-7

我正在使用需要导航到仅1页的Twebbrowser组件构建应用程序,应用程序将在Windows自动启动中,因此第一次导航时可能没有任何互联网连接,所以我想检查页面的标题,如果它不正确,再次导航。像这样:

procedure TForm1.titlechange(Sender: TObject; const Text: WideString);
begin
if Text = 'Untitled Document' then
begin
StaticText1.Visible := False;
Timer4.Enabled := False;
end
else
webbrowser1.Navigate('http://website.com');
end;

我希望在该程序上有5秒计时器,如果导航成功并且标题是“无标题文档”,则应禁用计时器。

我该怎么做?

谢谢!


我回到我原来的请求,我实现了提议的解决方案,这只做有时工作,如果没有网络连接有时会有“导航到网页被取消”这触发OnDocumentComplete我认为LocationName功能在Twebbrowser本身的功能描述错误。

我的原始代码确实有用,我只需要一个计时器!请有人帮帮我。

1 个答案:

答案 0 :(得分:3)

请尝试使用OnNavigatErrorOnDocumentComplete事件,例如:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer4Timer(nil);
end; 

procedure TForm1.Timer4Timer(Sender: TObject);
begin
  Timer4.Enabled := False;
  webbrowser1.Navigate('http://website.com');
end;

procedure TForm1.webbrowser1NavigateError(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant; var Frame: OleVariant; var StatusCode: OleVariant; var Cancel: WordBool);
begin
  Timer4.Enabled := True;
end;

procedure TForm1.webbrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  if webbrowser1.LocationName = 'Untitled Document' then
  begin
    StaticText1.Visible := False;
  end
  else begin
    Timer4.Enabled := True;
  end;
end;