Hallo,
möchte von einer HTML-Seite automatisch Daten extrahieren, was das Lesen vereinfacht. Aus Platzgründen benutze ich PageControl.
Auf einem TabSheet wähle ich in einem kleineren Fenster per TWebBrowser die Seite aus, die ich sehen möchte, welche dann auf einem weiteren TabSheet im Browser (TWebBrowser) angezeigt wird ... angezeigt werden sollte.
Im Normalfall führt mein Auswahlklick (TabSheet1) zum Browser (TabSheet2) - das klappt tadellos. Gehe ich jedoch nicht auf das TabSheet2 mit dem Browser, geht es nicht weiter, was zum Beispiel in
Delphi-Quelltext
1: 2: 3: 4: 5:
| REPEAT Application.ProcessMessages; IF Automatik_Stop_Flag THEN EXIT; Sleep(1); UNTIL WebBrowser1.ReadyState=READYSTATE_COMPLETE; |
hängen bleibt. Das bedeutet also, ReadyState ist nicht erfüllt... Da kann ich warten und warten... Gehe ich nur einmal kurz auf TabSheet2 mit dem Browser, läuft das korrekt weiter. Alternativ erledigt das zur Zeit
WebBrowser1.Show.
Wenn ich mich nicht irre, laufen danach weitere Aktionen ganz korrekt ab, nur kann ich nicht immer extra zum Fertigladen zum Browser klicken bzw.
Show aufrufen.
Frage: Was muss ich tun, damit der TWebBrowser
im Hintergrund korrekt arbeitet, ohne dass ich WebBrowser.Show verwenden musste. Refresh? brachte gar nix. InnerText und so ist leider vorher nicht einsetzbar und jede weitere Verarbeitung hängt.
In der Hoffnung, dass es simpel und einfach ist ...
TabSheet1: Button mit Aufruf WebBrowser1.Navigate('http://www.delphi-forum.de');
TabSheet2: enthält den WebBrowser1
Effekt: Der WebBrowser lädt erst dann vollständig und korrekt, wenn man auf TabSheet2 klickt.
Ist das eine Macke? Habe ich eine ? Oder sehe ich die simple Lösung vor lauter Bäumen nicht?
Moderiert von
Narses: Quote- durch Delphi-Tags ersetzt