Установить таймер на процедуру? - PullRequest
0 голосов
/ 12 октября 2011

Я создаю приложение с компонентом Twebbrowser, который должен перейти только на 1 страницу, приложение будет в автозапуске 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 Ответ

3 голосов
/ 12 октября 2011

Попробуйте вместо этого использовать события OnNavigatError и OnDocumentComplete, например:

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; 
...