Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.12;
Скачать: CL | DM;

Вниз

Ожидание загрузки страницы!   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.033 c
15-1184569945
PZ
2007-07-16 11:12
2007.08.12
Странное явление


2-1184854326
kyro
2007-07-19 18:12
2007.08.12
Можно ли в дбшрид дважды загрузить данные


15-1184546576
|
2007-07-16 04:42
2007.08.12
Свободные ресурсы


15-1184703140
Витян
2007-07-18 00:12
2007.08.12
Delphi 7 и Windows Vista


6-1167761692
maxistent
2007-01-02 21:14
2007.08.12
Как отменить отправку данных?