Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2008, 23:44   #1
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию Проверка окончания загрузки страницы в WebBrowser

Для проверки начала загрузки страницы в WebBrowser использую свойство OnDownloadBegin, а для окончания загрузки страницы - свойство OnDownloadComplete, но оно срабатывает раньше, чем страница загружается полностью, со всеми картинками и пр.
Есть ли альтернативный способ проследить полную загрузку?
Vladimir K. вне форума Ответить с цитированием
Старый 20.01.2008, 21:39   #2
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию

Вопрос решен. Всем спасибо.
Vladimir K. вне форума Ответить с цитированием
Старый 20.01.2008, 23:37   #3
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Если вы пишете воспрос и решаете его сами, описывайте свое решение для других, возможно оно будет лучше чем более ранние решения
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 21.01.2008, 00:21   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

[OFF]Присоединясь. Если для вас наш форум не только как бумажка для подтирки (когда приперло. а деваться некуда ), поделитесь решением вопроса - нам будет легче, не отрываясь на решение уже решенной задачи - просто дать ссылку на эту тему.
Надеюсь на ваше взаимопонимание...
З.Ы. Вообще, если вы заметили, наши модераторы не для того сидят, чтобы баны раздавать, а именно для того, чтобы играть роль "скорой помощи" (причем весьма, на мой взгляд, квалифицированной), ежели другие участники форума задерживаются с ответами.
Кстати, удивительно, насколько редко это бывает (это я про баны), видимо, сказывается общая культура форума (АЛАР у нас - молодец, воспитал, а самое главное - прежде подобрал кого надо!).[/OFF]

Последний раз редактировалось mihali4; 21.01.2008 в 14:03.
mihali4 вне форума Ответить с цитированием
Старый 21.01.2008, 10:42   #5
Vladimir K.
Пользователь
 
Регистрация: 25.12.2006
Сообщений: 64
По умолчанию

Прошу прощения. просто подумал это неинтересно общественности...
Вот решение:

Код:
var

  CurDispatch: IDispatch; {save the interface globally }

procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);

begin
  if CurDispatch = nil then
    CurDispatch := pDisp; { save for comparison }
end;

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
  if (pDisp = CurDispatch) then
  begin
    Beep; {the document is loaded, not just a frame }
    CurDispatch := nil; {clear the global variable }
  end;
end;
NavigateComplete2 возникает, когда приходит первая порция данных с сервера.
pDisp хранит ссылку на интрерфейс главной страницы...т.е. той, в которую могут быть вложены фреймы.
DocumentComplete срабатывает каждый раз при окончании загрузки
документа(фрейма).
Мы просто проверяем в каждом DocumentComplete, какой документ окончил загрузку, и, если это документ который был первым-главным, то все ОК!!! страница загружена полностью.


procedure TForm1.WebBrowser1DocumentComplete( Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);
begin
if (pDisp = CurDispatch) then
begin
Beep; {the document is loaded, not just a frame }
CurDispatch := nil; {clear the global variable }
Сюда вставлять свои команды, которые должны выполняться по окончании загрузки
end;
end;

Форум отличный! Действительно Скорая Помощь! Всем спасибо.
Vladimir K. вне форума Ответить с цитированием
Старый 21.01.2008, 13:18   #6
Virtson
Владимир М.
Участник клуба
 
Аватар для Virtson
 
Регистрация: 30.10.2006
Сообщений: 1,289
По умолчанию

и Вам , спасибо
Берегите друг друга!
Virtson вне форума Ответить с цитированием
Старый 22.10.2008, 12:26   #7
dirtytyphon
Новичок
Джуниор
 
Регистрация: 22.10.2008
Сообщений: 1
По умолчанию Еще вариант

procedure TfrmMain.BrowserDocumentComplete(Se nder: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin

if pDisp=(Sender as TWebBrowser).Application then
//загрузка завершена
...
else
//загружается фрэйм
...;

end;
dirtytyphon вне форума Ответить с цитированием
Старый 03.12.2008, 15:40   #8
Роман Радер
Форумчанин
 
Аватар для Роман Радер
 
Регистрация: 16.12.2006
Сообщений: 859
По умолчанию

Здравствуйте!
Я вот чего тему-то поднял...
способы работают, но если вдруг в одном фрейме будет ошибка загрузки - все, не вызывается последний раз для полного завершения.
как это исправить?
Роман Радер вне форума Ответить с цитированием
Старый 31.10.2010, 19:20   #9
postal2
Форумчанин
 
Аватар для postal2
 
Регистрация: 31.10.2008
Сообщений: 215
По умолчанию

В этом случае можно смотреть в сторону ошибки

Код:
procedure TForm1.webbrowser1NavigateError(ASender: TObject;
  const pDisp: IDispatch; var URL, Frame, StatusCode: OleVariant;
  var Cancel: WordBool);
begin
webbrowser1.Stop;
 showmessage('fail');
//ну, и наш код здесь.
end;
[Ferox]
postal2 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача страницы из webbrowser rootann Работа с сетью в Delphi 17 22.08.2009 11:26
Ожидание окончания вызванного процесса Johnson Win Api 11 16.07.2008 23:11
удаление символа окончания строки Xozer SQL, базы данных 1 07.02.2008 12:19
Как сделать разрыв страницы печати по условию и узнать номер страницы Leanna Microsoft Office Excel 2 21.01.2008 06:59
отслеживание загрузки программы ГОСЕАН Общие вопросы Delphi 4 13.12.2007 18:04