![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как после события TWebBrowser DownloadComplete вернуться в цикл! [D7, WinXP]
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}