-
Доборый день уважаемые! While AdoQuery1.Eof=False do begin
...
...
FormItem.Item(j).click;
В ЭТОМ месте мне надо узнать, сохранились ли данные корректно или НЕКОРРЕКТНО
Для этого предпологаю дождаться пока прогрузится cтраничка TWEBBROWSER-а
Вопрос: Как мне вернуться в этом местото цикла после события TWebBrowser DownloadComplete?
Возможно есть какая то альтернатива?
...
end; Спасибо!
-
Формулировка немного изменилась:
FF('_contractDate',DateToStr(Date),WebBrowser1);
BtnClick('_search',WebBrowser1);
Как в ЭТОМ МЕСТЕ ПОДОЖДАТЬ ПОКА ПРОГРУЗИТЬСЯ WEBBROWSER?И только потом продолжать выполнение команд! ShowMessage(WebBrowser1.OleObject.Document.all.tags('TABLE').Item(3).Rows.Item(0 ).Cells.Item(0).InnerText);
...
...
...
-
while WebBowser.Busy do begin sleep(0); Application.ProcessMessages end;
-
Чето не работает! : (
-
Ну тады пробуй так: with WebBowser do
while Busy or (ReadyState<>READYSTATE_COMPLETE) do begin
sleep(0);
Application.ProcessMessages
end;
-
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
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}
-
> Сергей М. © (05.12.07 14:29) [4]
Сейчас попробую!
-
> Lamer666 (05.12.07 14:29) [5]
Почитай в справке про логику изменения состояния св-ва Бизи.
-
Ну. А тебе после какой нужно чтобы он стал False?
-
> Rouse_ © (05.12.07 14:33) [8]
опечатался: а вот теперь {WebBrowser1.Busy=TRUE} Надо что бы ПОСЛЕ ЩЕЛЧКА пока не прогрузиться WEBBrowser сообщение не выводилось!
-
Сделайте проверку на корректность заполнения и прочие нужные действия в обработчике OnDownloadComplete
-
> Сделайте проверку на корректность заполнения и прочие нужные > действия в обработчике OnDownloadComplete
Это единственное решение которое нашел.
А вообще не могу понять как МНЕ реализовать такую схему, в цикле перебирать значения в DbGrid-е и для каждого значения осуществлять проверку в WebBrowser-е. Проблема в ТОМ, что пока WebBrowser не "прогрузит" значение из DbGrid-а и не загрузить результат обработки, я не могу продолжать работу цикла и брать новый элемент для роверки.
Что делать???
-
> Lamer666 (05.12.07 19:41) [11]
Ну так что скажешь по поводу [4], [6] ?
-
> Ну так что скажешь по поводу [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);
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, возможно ЭТО нормально? : (
-
> Lamer666 (06.12.07 10:34) [13]
))
Ты по-русски скажи - в тело цикла ты входишь или не входишь ?
-
> Ты по-русски скажи - в тело цикла ты входишь или не входишь > ?
Извини, я же говорил что НЕТ, не вхожу!
-
> я же говорил
Где ты это говорил ? Ткни меня носом ..
> ТУТ WebBrowser1 еще не отправляет данные (почему то)
Вероятно потому что после вызова BtnClick следует сначала обработать оконные сообщения и лишь потом запускать тот самый цикл ожидания.
-
> Где ты это говорил ? Ткни меня носом ..
Lamer666 (05.12.07 14:29) [5] ... While WebBrowser1.Busy do {WebBrowser1.Busy=Flase} Может и не явно : )) ...
-
> Lamer666 (06.12.07 11:47) [17]
Ну знаешь ли, я, к сож., не владею всеми местными диалектами эзопова языка)
Так что изволь для пользы дела выражаться четко и ясно, мол, ни одна итерация этого цикла не выполнена по таким-то конкретным причинам)
-
Извини : )
-
Так что то НИЧЕГО и не получаеться : ( И все же как организовать цикл (перебор записей ADOQuery) с ожиданием прогрузки WebBrowser-а для переходна к седующей записи?
-
Показывай код ..
-
> ТУТ 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; > {А ВОТ ТУТ НАЧИНАЕТ ОТПРАВКУ ДАННЫХ}
Потому что мменно Application.ProcessMessages позволяет тебе временно приостановить данный код и "нагрузить" WebBrowser1, а ты проверяешь WebBrowser1.Busy до Application.ProcessMessages. Замени While на repeat или дополни выражение так, чтобы хоть раз тело цикла выполнилось.
-
> ЮЮ © (11.12.07 11:55) [22]
Сейчас БУДУ ПРОБОВАТЬ. Большое спасибо: ЮЮ и Сергей М. : ))
-
Супер! Application.ProcessMessages;
While WebBrowser1.Busy do begin
sleep(0);
Application.ProcessMessages;
end; НА УРА работает! Спасибо большое ЮЮ и Сергей М.
|