![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Друзья, подскажите пожалуйста как поступить..
Нужно выполнить действие после полной загрузки страницы в Webbrowser со всеми фреймами и прочим. Когда цепляю действие на событие "OnDocumentComplete" оно дублируется несколько раз. Нагуглил, что действие на данном событии может срабатывать несколько раз. Но как поступить, если нужно только одно срабатывание? |
|
#2
|
|||
|
|||
|
Разобрался...
Вот пример, если кому вдруг нужно будет. Код:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OLEvariant);
var
CurWebrowser : IWebBrowser;
TopWebBrowser: IWebBrowser;
Document : OLEvariant;
WindowName : string;
begin { TForm1.WebBrowser1DocumentComplete }
CurWebrowser := pDisp as IWebBrowser;
TopWebBrowser := (Sender as TWebBrowser).DefaultInterface;
if CurWebrowser=TopWebBrowser then
begin
ShowMessage('Document is complete.')
end
else
begin
Document := CurWebrowser.Document;
WindowName := Document.ParentWindow.Name;
ShowMessage('Frame ' + WindowName + ' is loaded.')
end;
end; |
|
#3
|
|||
|
|||
|
Можно еще проще.
У WebBrowser'а есть свойство, которое выставляется в TRUE, когда загрузка полностью закончена. Достаточно в цикле просто проверять это свойство. Как называется - на вскидку не помню, но погугли. |
|
#4
|
||||
|
||||
|
Код:
var url: OleVariant; begin url:='http://www.delphisources.ru/'; WebBrowser.Navigate2(url); while WebBrowser.ReadyState<>READYSTATE_COMPLETE do Application.ProcessMessages; end; а это из файла справки Delphi 6: Цитата:
Последний раз редактировалось NumLock, 28.10.2010 в 08:38. |