|
Вопрос # 3 928/ вопрос открыт / |
|
Здравствуйте, уважаемые эксперты!
Работая с WebBrowser я заметил одну неприятность - во время того как загружается страница мне нужно добиться полной её загрузки:
Делаю я это так...
WebBrowser1.Navigate('sdfsdfsdfsdfsdfsdfs');
while WB1.Busy do Application.ProcessMessages;
Но при использовании такого кода не происходит нужного, однако, если сперва поставить WebBrowser1.Navigate('sdfsdfsdfsdfsdfsdfs'); напимер в OnClick куда-нибудь, а по нажатию на вторую кнопу сделать while WB1.Busy do Application.ProcessMessages; происходит то что нужно (причем не зависти когда нажата вторая кнопка сразу же или чуть позже). Тогда программа дожидается загрузки страницы....
Помоготе разобраться с этим случаем пожалуйста. Заранее спасибо.
 |
Вопрос задал: eclipse (статус: Посетитель)
Вопрос отправлен: 25 марта 2010, 16:40
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Вадим К
Здравствуйте, eclipse!
Крутясь в цикле, Вы не даете работать броузеру и только даром поедаете процессорное время.
Другая разновидность вашего кода выглядит так
while (webBrowser1.ReadyState <> READYSTATE_COMPLETE) do
Application.ProcessMessages;
(если не находит READYSTATE_COMPLETE, объявите константу
const READYSTATE_COMPLETE = 4;)
Но по хорошему, лучше использовать событие от броузера OnNavigateComplete2, которое вызывается тогда, когда страница полностью загружена.
 |
Ответ отправил: Вадим К (статус: Академик)
Время отправки: 25 марта 2010, 17:09
|
Мини-форум вопроса
Всего сообщений: 5; последнее сообщение — 7 апреля 2010, 17:01; участников в обсуждении: 2.
|
eclipse (статус: Посетитель), 7 апреля 2010, 16:12 [#1]:
Долго мучался и пришёл к выводу, хоть и получается как-то некорректно :
try
webbrowser1.navigate('........');
finnaly
While Webbrowser1.busy do application.processmessages;
end;
|
|
Вадим К (статус: Академик), 7 апреля 2010, 16:33 [#2]:
А чем он принципиально отличается от начального Вашего варианта?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
eclipse (статус: Посетитель), 7 апреля 2010, 16:45 [#3]:
Да хрен его знает! Просто попробывал так и получилось...
|
|
Вадим К (статус: Академик), 7 апреля 2010, 16:55 [#4]:
Бывает так, что какое то кусок кода при определенных стечениях обстоятельств начинает работать. Но на другой машине уже не будет. или изменятся параметры компиляции.
Итого - плохое решение.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
eclipse (статус: Посетитель), 7 апреля 2010, 17:01 [#5]:
Согласен! С подобным сталкивался.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|