| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Сети > Помогите с WebBrowser |
| Автор: AlexLogos 9.2.2011, 20:02 | ||||
Народ, здравствуйте опять
Но в результате получаю еще предыдущий адрес. Толи браузер еще не завершыл обработку, то ли еще что-то. Пробыва узнавать не закончил ли браузер загрузку и писал
Всеравно получаю старый адрес. Как отследить когда можна забрать новый адрес? |
| Автор: cat512 10.2.2011, 03:08 |
| Очевидно твоя функция криво работает Используй Navigate, должно работать |
| Автор: MetalFan 10.2.2011, 16:08 |
| Я в свое время пользовался TEmbeddedWB назначал событие OnDocumentComplete и OnNavigateError, в нем выставлялся флаг, что мол страница загружена или ошибка произошла. А цикл ожидания загрузки страницы выглядел как ожидания взведения одного из флагов. |
| Автор: AlexLogos 10.2.2011, 16:51 |
| MetalFan, твой способ мог бы помочь. но браузер и процедура - это разные модули. Если я укажу в юзес модуль с браузером и налажу с ним нормальную работу, я потеряю универсальность модуля который работает с браузером. Можна в принципе решить этот вопрос через флаг, но тогда надо будет этот флаг определить в отдельном классе чтоб получить ссылочный тип, но там тоже мороки куча... |
| Автор: MetalFan 10.2.2011, 17:07 |
| AlexLogos, ну мое дело предложить вариант. Не нравится - сделай по своему) |
| Автор: AlexLogos 10.2.2011, 17:10 |
| Попробовал так как написал - создал клас, в нем переменная Boolean. Клас глобальный для модуля с браузером и как параметр для процедуры из другого модуля. Всеравно не то... Добавлено через 51 секунду Но, всеравно спасибо)))) |
| Автор: MetalFan 10.2.2011, 17:14 |
а в чем проблема? OnDocumentComplete не вызывается? или вызывается раньше, чем надо? |
| Автор: AlexLogos 10.2.2011, 17:18 |
| Всеравно раньше чем надо... |
| Автор: AlexLogos 10.2.2011, 18:02 |
| Народ, еще вопрос: когда динамически создаю WebBrowser, загружаю страницу методом Navigate потом програмно не могу заполнить форму. Процедура для заполнения формы работает только когда браузер виден на форме (даже если на другой вкладке допустим PageControl'а). Как починить? |
| Автор: MetalFan 10.2.2011, 18:19 |
| AlexLogos, да, без назначенного parent'а ВебБраузер работает некорректно - факт. Назначь парента, а visible в false выстави. |
| Автор: AlexLogos 10.2.2011, 18:24 | ||
| Parent у WebBrousera - Read-Only Property... Добавлено через 4 минуты и 35 секунд Даже если создаю отдельную форму и ее делаю оунером при создании браузера - не работает. мало того браузер не отображается...
|
| Автор: AlexLogos 11.2.2011, 17:20 | ||
Нашел в сети решение как присвоить Парента Браузеру
После этого все заработало как часики, в том смысле что браузер появился на форме и позволил заполнить форму. Решение к начальной задаче еще не найдено, но уже есть промежуточное которое можна начальству показать |
| Автор: AlexLogos 11.2.2011, 17:56 | ||
В общем чтоб сделать задержку я написал код:
Этого времени браузеру хватило чтоб обработать форму и отправить запрос. Думаю что можна и меньше таймаут поставить, тогда придется работать с милисекундами, но это зависит не только от браузера но и от машины, поэтому оставлю пока так. Вопрос решен. |
| Автор: cat512 11.2.2011, 18:33 | ||||
Хреновое решение. У тебя вся логика поломается, как только нагрузка на сервер увеличится.Тот код, который у тебя был (проверка COMPLETE)- рабочий. Я использовал подобный в связке с navigate. В любом случае, для корректной работы, тебе надо привязываться к состоянию броузера. |
| Автор: AlexLogos 11.2.2011, 18:36 | ||
Вообще-то продолжение кода...
Тоесть то же самое... Добавлено @ 18:37 Задержка нужна чтоб браузер обработал форму, создал новый Get-запрос и отправил на сервак, и ждет ответа... |