![]() |
twebbrowser will einfach nicht warten
ich benutze derzeit folgende procedure:
Delphi-Quellcode:
die hab ich hier vom forum aufgeschnappt :)
procedure TseotoboForm.Wait(WebBrowser1: TWebBrowser);
begin while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do begin Application.ProcessMessages; delay(50); end; end; leider will twebbrowser einfach nicht warten, mir fällt es generell auf wenn ich ein formular per submit losschicke und durch eine langsame verbindung zum server der webbrowser versucht das nächste formular auszufüllen, welches dann natürlich noch nicht vorhanden ist gibt es eine 100%ige lösung dafür das twebbrowser nur dann weitermachen wenn _alles_ geladen ist? |
Re: twebbrowser will einfach nicht warten
Herzlich willkommen in der Delphi-PRAXiS, pillepalle.
Die Prozedur ist auf den ersten Blick nicht schlecht, aber hat auf den zweiten Blick einen Mangel: Wird sie direkt nach dem WebBrowser.Navigate() aufgerufen und wurde der WebBrowser bereits einmal initialisiert, dann dürfte ReadyState beim Eintritt in die Prozedur immernoch auf 'Complete' stehen. Besser als dieses Busy-Waiting ist das Arbeiten mit den vorgesehenen Ereignissen OnBeforeNavigate2() und OnDocumentComplete(). Auch dazu findest du in der DP reichlich Quellcode-Beispiele.
Delphi-Quellcode:
Freundliche Grüße vom marabu
type
TWebForm = class(TForm) // ... private DocumentWait: IDispatch; procedure ProcessDocument(document: IHTMLDocument2); end; // ... procedure TWebForm.WebBrowserBeforeNavigate2(Sender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin DocumentWait := pDisp; end; procedure TWebForm.WebBrowserDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin if DocumentWait = pDisp then with pDisp as IWebBrowser2 do ProcessDocument(Document as IHTMLDocument2); end; procedure TWebForm.ProcessDocument(document: IHTMLDocument2); begin ShowMessage(document.title); end; |
Re: twebbrowser will einfach nicht warten
funktioniert super, danke für deinen support, echt spitze!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz