C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
CppWebBrowser
SomewhereSomeh_w
Отправлено: 07.12.2004, 02:04


Не зарегистрирован







Всем доброго времени суток, описываю вкратце суть вопроса. Есть некая функция которая вызывает в цикле метод CppWebBrowser->Navigate, например,
CODE

void __fastcall TForm1::Process()
{    
 TStringList * Links = new TStringList();
 .......      

 for (int i = 0; i < Links->Count;i++)      
   CppWebBrowser->Navigate(Links->Strings[i],NULL,NULL,NULL,NULL);  
}


Требуется прежде чем переходить по следующей ссылке, дождаться выполнения обработчика OnDocumentComplete. Т.е. алгоритм такой: Идем по первой ссылке, дожидаемся пока страница загрузится и выполнится обработчик, идем по второй ссылке, дожидаемся пока страница загрузится и выполнится обработчик и т.д. пока список ссылок не закончится. У кого-нибудь есть идеи как это сделать?
AVC
Отправлено: 07.12.2004, 09:10


Ветеран

Группа: Модератор
Сообщений: 1583



А почуму-бы не использовать флаги?
SomewhereSomehow
Отправлено: 07.12.2004, 12:54


Ученик-кочегар

Группа: Участник
Сообщений: 18



Поподробнее плиз!! Какие флаги?
creater
Отправлено: 07.12.2004, 14:35


Станционный диспетчер

Группа: Участник
Сообщений: 120



QUOTE (SomewhereSomehow @ 07/12/2004, 13:56)
Поподробнее плиз!! Какие флаги?

int flag = 0;
int flag = 1;
AVC
Отправлено: 07.12.2004, 15:17


Ветеран

Группа: Модератор
Сообщений: 1583



Первое, что приходит в голову:
CODE

//Form1.h
private:
bool FIsDocumentComplete;

//Form1.cpp
void __fastcall TForm1::Process()
{    
TStringList * Links = new TStringList();
.......      

for (int i = 0; i < Links->Count;i++)      
 { FIsDocumentComplete = false;
   CppWebBrowser->Navigate(Links->Strings[i],NULL,NULL,NULL,NULL);  
   while (!FIsDocumentComplete)
       Application->ProcessMessages(); // здесь можно проверить время и ждать не более n секунд или выходить по нажатию кнопки
}
//В обработчике события OnDocumentComplete
FIsDocumentComplete = true;
SomewhereSomehow
Отправлено: 07.12.2004, 17:07


Ученик-кочегар

Группа: Участник
Сообщений: 18



Все спасибо разобрался!
вот такая шняга получилась в качестве задержки =)

while(CppWebBrowser->ReadyState!=4)
Application->ProcessMessages();
Георгий
Отправлено: 07.12.2004, 21:22


Почетный железнодорожник

Группа: Модератор
Сообщений: 874



изврат!
а delay или sleep в цикл поставить не хочешь? а то если коннект медленный загрузка будет длится долго, а загрузка проца ~100% sad.gif что не всем нравится.
SomewhereSomehow
Отправлено: 08.12.2004, 18:01


Ученик-кочегар

Группа: Участник
Сообщений: 18



Да, согласен с загрузкой проца г-но полное... Наверное таймер всеж-таки поставлю чтоб не так резво каждый раз проверял состояние загрузки страницы в браузере.

Отредактировано SomewhereSomehow — 08/12/2004, 19:04

Вернуться в Вопросы программирования в C++Builder