Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как после события TWebBrowser DownloadComplete вернуться в цикл! [D7, WinXP]


Страницы:   1 2

Lamer666 ©   (2007-12-05 12:00:00) 

Доборый день уважаемые!

While AdoQuery1.Eof=False do begin
 ...
{Тут заполняю форму в TWEBBrowser-e}
 ...
FormItem.Item(j).click;{Щелкаю на кнопку чтобы сохранить данные}

В ЭТОМ месте мне надо узнать, сохранились ли данные корректно или НЕКОРРЕКТНО
Для этого предпологаю дождаться пока прогрузится cтраничка TWEBBROWSER-а
Вопрос: Как мне вернуться в этом местото цикла после события TWebBrowser DownloadComplete?
Возможно есть какая то альтернатива?
...

end;

Спасибо!


Lamer666   (2007-12-11 22:24:00) [1]

Супер!
Application.ProcessMessages;
While WebBrowser1.Busy do begin
 sleep(0);
 Application.ProcessMessages;
end;
НА УРА работает!
Спасибо большое ЮЮ и Сергей М.


Lamer666   (2007-12-11 20:08:00) [2]


> ЮЮ ©   (11.12.07 11:55) [22]

Сейчас БУДУ ПРОБОВАТЬ.
Большое спасибо: ЮЮ и Сергей М.
: ))


ЮЮ   (2007-12-11 11:55:00) [3]

> ТУТ WebBrowser1 еще не отправляет данные (почему то)}
> While WebBrowser1.Busyor (WebBrowser1.ReadyState<>READYSTATE_COMPLETE)
> do begin
>  sleep(0);
>   Application.ProcessMessages;
> end;
> ShowMessage(WebBrowser1.OleObject.Document.all.tags('TABLE')
> .Item(3).Rows.Item(0 ).Cells.Item(0).InnerText);
> end;
> {А ВОТ ТУТ НАЧИНАЕТ ОТПРАВКУ ДАННЫХ}


Потому что мменно Application.ProcessMessages позволяет тебе временно приостановить данный код и "нагрузить" WebBrowser1, а ты проверяешь WebBrowser1.Busy до Application.ProcessMessages. Замени While на repeat или дополни выражение так, чтобы хоть раз тело цикла выполнилось.


Сергей М.   (2007-12-11 08:17:00) [4]

Показывай код ..


Lamer666   (2007-12-10 19:14:00) [5]

Так что то НИЧЕГО и не получаеться : (
И все же как организовать цикл (перебор записей ADOQuery) с ожиданием прогрузки WebBrowser-а для переходна к седующей записи?


Lamer666   (2007-12-06 11:57:00) [6]

Извини : )


Сергей М.   (2007-12-06 11:53:00) [7]


> Lamer666   (06.12.07 11:47) [17]


Ну знаешь ли, я, к сож., не владею всеми местными диалектами эзопова языка)

Так что изволь для пользы дела выражаться четко и ясно, мол, ни одна итерация этого цикла не выполнена по таким-то конкретным причинам)


Lamer666   (2007-12-06 11:47:00) [8]


> Где ты это говорил ? Ткни меня носом ..


Lamer666   (05.12.07 14:29) [5]
...
While WebBrowser1.Busy do {WebBrowser1.Busy=Flase} Может и не явно : ))
...


Сергей М.   (2007-12-06 11:42:00) [9]


> я же говорил


Гдеты это говорил ? Ткни меня носом ..


> ТУТ WebBrowser1 еще не отправляет данные (почему то)


Вероятно потому что после вызова BtnClick следует сначала обработать оконные сообщения и лишь потом запускать тот самый цикл ожидания.


Lamer666   (2007-12-06 11:27:00) [10]


> Ты по-русски скажи - в тело цикла ты входишь или не входишь
> ?

Извини, я же говорил что НЕТ, не вхожу!


Сергей М.   (2007-12-06 11:23:00) [11]


> Lamer666   (06.12.07 10:34) [13]


))

Ты по-русски скажи - в тело цикла ты входишь или не входишь ?


Lamer666   (2007-12-06 10:34:00) [12]


> Ну так что скажешь по поводу [4], [6] ?

Не работает! Вот КОД:

procedure TForm1.PngSpeedButton2Click(Sender: TObject);
begin
 FF('_phoneNumber',AdoQuery1.FieldByName('phone').AsString,WebBrowser1);
 FF('_salePointCode','555555',WebBrowser1);
 FF('_contactPhone','83473215010',WebBrowser1);
 FF('_lastName','Иванов',WebBrowser1);
 FF('_firstName','Иван',WebBrowser1);
 FF('_midName','Иванович',WebBrowser1);
 FF('_birthday','17.01.1970',WebBrowser1);
 FF('_sexTypes','1',WebBrowser1);
 FF('_docSeries','2222',WebBrowser1);
 FF('_docNumber','55555',WebBrowser1);
 FF('_docDateReceived','20.03.2002',WebBrowser1);
 FF('_contractDate',DateToStr(Date),WebBrowser1);

 BtnClick('_search',WebBrowser1);
{ТУТ WebBrowser1 еще не отправляет данные (почему то)}
While WebBrowser1.Busy or (WebBrowser1.ReadyState<>READYSTATE_COMPLETE) do begin
  sleep(0);
  Application.ProcessMessages;
 end;
 ShowMessage(WebBrowser1.OleObject.Document.all.tags('TABLE').Item(3).Rows.Item(0 ).Cells.Item(0).InnerText);
end;
{А ВОТ ТУТ НАЧИНАЕТ ОТПРАВКУ ДАННЫХ}

То есть прогрузка WebBriwser-а происходит после выполнения всех строк в процедуре TForm1.PngSpeedButton2Click, возможно ЭТО нормально? : (


Сергей М.   (2007-12-06 09:07:00) [13]


> Lamer666   (05.12.07 19:41) [11]


Ну так что скажешь по поводу [4], [6] ?


Lamer666   (2007-12-05 19:41:00) [14]


> Сделайте проверку на корректность заполнения и прочие нужные
> действия в обработчике OnDownloadComplete


Это единственное решение которое нашел.

А вообще не могу понять как МНЕ реализовать такую схему, в цикле перебирать значения в DbGrid-е и для каждого значения осуществлять проверку в WebBrowser-е. Проблема в ТОМ, что пока WebBrowser не "прогрузит" значение из DbGrid-а и не загрузить результат обработки, я не могу продолжать работу цикла и брать новый элемент для роверки.

Что делать???


umbra   (2007-12-05 18:28:00) [15]

Сделайте проверку на корректность заполнения и прочие нужные действия в обработчике OnDownloadComplete


Lamer666   (2007-12-05 14:37:00) [16]


> Rouse_ ©   (05.12.07 14:33) [8]

опечатался:
а вот теперь {WebBrowser1.Busy=TRUE}
Надо что бы ПОСЛЕ ЩЕЛЧКА пока не прогрузиться WEBBrowser сообщение не выводилось!


Rouse_   (2007-12-05 14:33:00) [17]

Ну. А тебе после какой нужно чтобы он стал False?


Сергей М.   (2007-12-05 14:32:00) [18]


> Lamer666   (05.12.07 14:29) [5]


Почитай в справке про логику изменения состояния св-ва Бизи.


Lamer666   (2007-12-05 14:32:00) [19]


> Сергей М. ©   (05.12.07 14:29) [4]

Сейчас попробую!


Lamer666   (2007-12-05 14:29:00) [20]

WebBowser.Busy становиться True после выполнения всех срок почему то?!
То есть

 FF('_docDateReceived','20.03.2002',WebBrowser1);
 FF('_comment',3232026818000318',WebBrowser1);
 FF('_contractDate',DateToStr(Date),WebBrowser1);
 BtnClick('_search',WebBrowser1);{ЩЕЛКАЮ НА КНОПКЕ}
 While WebBrowser1.Busy do {WebBrowser1.Busy=Flase}
 begin
   Sleep(0);
   Application.ProcessMessages;
 end;
 ShowMessage(WebBrowser1.OleObject.Document.all.tags('TABLE').Item(3).Rows.Item(0 ).Cells.Item(0).InnerText);

а вот теперь {WebBrowser1.Busy=Flase}


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо