Установить таймер на процедуру?

#delphi #delphi-7

#delphi #delphi-7

Вопрос:

я создаю приложение с компонентом 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:

Попробуйте вместо этого использовать события 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; 
  

Комментарии:

1. Привет, спасибо за ваш ответ, я немного новичок в Delphi, я заменил свой Timer4 вашим кодом и вставил Timer4Timer (nil); в моей процедуре FormCreate я получаю необъявленные ошибки идентификатора в webbrowser1NavigateError, webbrowser1DocumentComplete и webbrowser1.LocationName, что мне нужно сделать?

2. @user990767 вам нужно будет щелкнуть по компоненту браузера, затем на вкладке события обозревателя объектов, а затем дважды щелкнуть по событию «DocumentComplete» и скопировать содержимое процедуры webbrowser1DocumentComplete. И повторите для остальных. Название процедур здесь — это имя объекта и событие вместе взятые.