Форум: "Основная";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
ВнизОжидание загрузки страницы! Найти похожие ветки
← →
JanMihail © (2007-05-31 18:48) [0]Уважаемые мастера! Помогите справится с такой задачей. Мне нужно организовать задержку программы до тех пор, пока не загрузится страница в компоненте TWebBrowser. Делаю так:
procedure Start;
label Nachalo;
begin
Nachalo:
//тут много кода
........................
while WebBrowser1.ReadyState <> 4 do
Application.ProcessMessages;
WebBrowser1.Navigate("новая страница");
goto Nachalo;
end;
Но такой цикл очень сильно грузит процессор. Но проблема еще в том что после первого прохода процедуры все нормально. Параметр ReadyState становится равным 4, дальше я назначаю WebBrowserу новую страницу. Иду в начало, а цикл не выполняется, т.к. параметр ReadyState еще не успел поменять свое значение с 4 на 1, а цикл уже прошел и ожижать загрузки он не стал.
Не подскажете, как вообще это реализовать рационально?. Заранее спасибо!!!
← →
G_M_S © (2007-05-31 18:51) [1]
> Мне нужно организовать задержку программы до тех пор, пока
> не загрузится страница в компоненте TWebBrowser.
while WebBrowser1.Busy do Application.ProcessMessages;
← →
TStas © (2007-06-01 16:44) [2]Или OnNawigate использовать
← →
clickmaker © (2007-06-01 16:50) [3]OnDocumentComplete
← →
DVM © (2007-06-01 16:51) [4]
> while WebBrowser1.Busy do Application.ProcessMessages;
Это по-твоему задержка? Если на форме есть, например, кнопка, то на нее можно будет нажать и будет выполнен обработчик события связанный с нажатием этой кнопки.
← →
Arm79 © (2007-06-01 17:40) [5]
function TfrmMain.GetPlainText(const HTMLStr: string): string;
var
sTemp : string;
Doc : IHTMLDocument2;
V : Variant;
begin
sTemp := HTMLStr;
if wbTransformer.Document = nil
then begin
wbTransformer.Navigate("about:blank");
repeat
Application.ProcessMessages;
until wbTransformer.Document <> nil;
end;
Doc := IHTMLDocument2(wbTransformer.Document);
v := VarArrayCreate([0, 0], varVariant);
v[0] := sTemp;
Doc.write(PSafeArray(TVarData(v).VArray));
Doc.close;
Result := Doc.body.outerText;
end;
← →
G_M_S © (2007-06-01 18:12) [6]
> Это по-твоему задержка?
Поставь вместо "Application.ProcessMessages" просто ";", если не надо ожидать каких-либо действий юзера.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2007.08.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.046 c