![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WebBr [D7, Win2k, WinXP]
TUser © (2003-11-25 10:24:00)
Help. Как мне узнать, что TWebBrowser закончил загружать документ и показал его. Пробую OnNavigateComplete, OnDownloadComplete, OnDocumentComplete. Не могу понять, когда срабатывают эти события, но точно раньше, чем документ будет показан в окне. Пробовал даже написать так
Navigate(URL);
while webbrowser1.busy do begin end;
и после этого - свой код, но busy ваще всегда равно true и бесконечно выполняется begin..end, а в окне страница не отображается.
nikkie (2003-11-26 04:14:00) [1]
чтобы код
while webbrowser1.busy do begin end;
не зацикливался, между begin и end нужно вставить Application.ProcessMessages.
SergP (2003-11-26 03:22:00) [2]
Эти события могут возникать несколько раз. Особенно они любят возникать после загрузки отдельных фреймов.
Вобщем вот я вытянул из одной своей старой проги:
функция возвращающая true если фрейм загрузился. Передается ей номер фрейма (начиная с 0).
Я хочу уже спать, поэтому ты уже сам переделай чтобы она показывала когда загружен весь документ. Т.е. все фреймы. Тут не много исправлять. Кое-что убрать и все...
function TForm1.oncomplete(const frame:integer):boolean;
var Doc: IHTMLDocument2;
Coll: IHTMLElementCollection;
begin
try
Doc:= IHTMLDocument2(WebBrowser1.Document);
except
end;
result:=false;
if (Doc <> nil) then
begin
Coll:=IHTMLElementCollection(Doc.All.Tags("FRAME"));
if (Coll.length>0) and (frame<coll.length) then
begin
with HTMLFrameElement(Coll.item(frame, varEmpty)) do
begin
if readyState="complete" then Result:=true;
end;
end;
end;
end;
TUser (2003-11-25 15:25:00) [3]
Нужто никто не знает?