#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. И повторите для остальных. Название процедур здесь — это имя объекта и событие вместе взятые.