Форум: "Сети";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];
ВнизКак после события TWebBrowser DownloadComplete вернуться в цикл! Найти похожие ветки
← →
Lamer666 (2007-12-05 12:00) [0]Доборый день уважаемые!
While AdoQuery1.Eof=False do begin
...
{Тут заполняю форму в TWEBBrowser-e}
...
FormItem.Item(j).click;{Щелкаю на кнопку чтобы сохранить данные}
В ЭТОМ месте мне надо узнать, сохранились ли данные корректно или НЕКОРРЕКТНО
Для этого предпологаю дождаться пока прогрузится cтраничка TWEBBROWSER-а
Вопрос: Как мне вернуться в этом местото цикла после события TWebBrowser DownloadComplete?
Возможно есть какая то альтернатива?
...
end;
Спасибо!
← →
Lamer666 (2007-12-05 13:00) [1]Формулировка немного изменилась:
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);
...
...
...
← →
Сергей М. © (2007-12-05 13:34) [2]while WebBowser.Busy do begin
sleep(0);
Application.ProcessMessages
end;
← →
Lamer666 (2007-12-05 14:22) [3]Чето не работает!
: (
← →
Сергей М. © (2007-12-05 14:29) [4]Ну тады пробуй так:
with WebBowser do
while Busy or (ReadyState<>READYSTATE_COMPLETE) do begin
sleep(0);
Application.ProcessMessages
end;
← →
Lamer666 (2007-12-05 14:29) [5]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}
← →
Lamer666 (2007-12-05 14:32) [6]
> Сергей М. © (05.12.07 14:29) [4]
Сейчас попробую!
← →
Сергей М. © (2007-12-05 14:32) [7]
> Lamer666 (05.12.07 14:29) [5]
Почитай в справке про логику изменения состояния св-ва Бизи.
← →
Rouse_ © (2007-12-05 14:33) [8]Ну. А тебе после какой нужно чтобы он стал False?
← →
Lamer666 (2007-12-05 14:37) [9]
> Rouse_ © (05.12.07 14:33) [8]
опечатался:
а вот теперь {WebBrowser1.Busy=TRUE}
Надо что бы ПОСЛЕ ЩЕЛЧКА пока не прогрузиться WEBBrowser сообщение не выводилось!
← →
umbra © (2007-12-05 18:28) [10]Сделайте проверку на корректность заполнения и прочие нужные действия в обработчике
OnDownloadComplete
← →
Lamer666 (2007-12-05 19:41) [11]
> Сделайте проверку на корректность заполнения и прочие нужные
> действия в обработчике OnDownloadComplete
Это единственное решение которое нашел.
А вообще не могу понять как МНЕ реализовать такую схему, в цикле перебирать значения в DbGrid-е и для каждого значения осуществлять проверку в WebBrowser-е. Проблема в ТОМ, что пока WebBrowser не "прогрузит" значение из DbGrid-а и не загрузить результат обработки, я не могу продолжать работу цикла и брать новый элемент для роверки.
Что делать???
← →
Сергей М. © (2007-12-06 09:07) [12]
> Lamer666 (05.12.07 19:41) [11]
Ну так что скажешь по поводу [4], [6] ?
← →
Lamer666 (2007-12-06 10:34) [13]
> Ну так что скажешь по поводу [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 11:23) [14]
> Lamer666 (06.12.07 10:34) [13]
))
Ты по-русски скажи - в тело цикла ты входишь или не входишь ?
← →
Lamer666 (2007-12-06 11:27) [15]
> Ты по-русски скажи - в тело цикла ты входишь или не входишь
> ?
Извини, я же говорил что НЕТ, не вхожу!
← →
Сергей М. © (2007-12-06 11:42) [16]
> я же говорил
Где ты это говорил ? Ткни меня носом ..
> ТУТ WebBrowser1 еще не отправляет данные (почему то)
Вероятно потому что после вызова BtnClick следует сначала обработать оконные сообщения и лишь потом запускать тот самый цикл ожидания.
← →
Lamer666 (2007-12-06 11:47) [17]
> Где ты это говорил ? Ткни меня носом ..
Lamer666 (05.12.07 14:29) [5]
...
While WebBrowser1.Busy do {WebBrowser1.Busy=Flase} Может и не явно : ))
...
← →
Сергей М. © (2007-12-06 11:53) [18]
> Lamer666 (06.12.07 11:47) [17]
Ну знаешь ли, я, к сож., не владею всеми местными диалектами эзопова языка)
Так что изволь для пользы дела выражаться четко и ясно, мол, ни одна итерация этого цикла не выполнена по таким-то конкретным причинам)
← →
Lamer666 (2007-12-06 11:57) [19]Извини : )
← →
Lamer666 (2007-12-10 19:14) [20]Так что то НИЧЕГО и не получаеться : (
И все же как организовать цикл (перебор записей ADOQuery) с ожиданием прогрузки WebBrowser-а для переходна к седующей записи?
← →
Сергей М. © (2007-12-11 08:17) [21]Показывай код ..
← →
ЮЮ © (2007-12-11 11:55) [22]> ТУТ 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 или дополни выражение так, чтобы хоть раз тело цикла выполнилось.
← →
Lamer666 (2007-12-11 20:08) [23]
> ЮЮ © (11.12.07 11:55) [22]
Сейчас БУДУ ПРОБОВАТЬ.
Большое спасибо: ЮЮ и Сергей М.
: ))
← →
Lamer666 (2007-12-11 22:24) [24]Супер!
Application.ProcessMessages;
НА УРА работает!
While WebBrowser1.Busy do begin
sleep(0);
Application.ProcessMessages;
end;
Спасибо большое ЮЮ и Сергей М.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2009.01.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.007 c