Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webbrowser warten bis fertig geladen, dann code weiter! (https://www.delphipraxis.net/106793-webbrowser-warten-bis-fertig-geladen-dann-code-weiter.html)

EsLaVaToR 16. Jan 2008 20:35


Webbrowser warten bis fertig geladen, dann code weiter!
 
Hallo zusammen

Bin zur zeit ein wenig am verzweifel. Ich schreib gerade en Prog und komme einfach nicht weiter.

Mein Problem ist es, wenn ich in einer Prozedur eine URl im Webbrowser aufrufe und danach sofort eine Abfrage auf eine Textbox mache kommt immer ein Fehler, weil der Browser die URL noch nicht fertiggeladen hat.


code:
WebBrowser2.Navigate('http://www.temporaryinbox.com/');
New_INBOXEMAIL := WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('inbox').value;


Wie ihr seht, will ich eine neue Email von Temporaryinbox haben.

Wie bekomme ich eine Pause zwischen den beiden Codezeilen, sodass der Browaser vollständig geladen ist und dann erst die Emailadresse geholt wird?

Besten Dank schonmal für all eure Mühen!

lbccaleb 16. Jan 2008 20:37

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
der webbrowser hat ein event das nennt sich "ondocumentcomplete"!! schau dir das mal an, das sollte dir weiter helfen^^

DeddyH 16. Jan 2008 20:38

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Ich benutze den WebBrowser zwar nicht, aber AFAIK hat er doch ein Ereignis OnDocumentComplete oder so ähnlich ;)

P.S.: Gruß nach Soest vom einem Ex-Neheimer :-)

EsLaVaToR 16. Jan 2008 20:41

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Das habe ich mir schon angeschaut!
Aber wie soll mir das zwischen den beiden Codezeilen helfen?

Muss ja irgendwie eine Pause, von wegen "DocumentComplete", dann erst die Email auslesen rein.

Auch schöne Grüße aus Soest zurück!

DeddyH 16. Jan 2008 20:42

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Im ButtonClick (oder wo es auch steht) das Navigate rein, der Rest ins OnDocumentComplete.

EsLaVaToR 16. Jan 2008 20:44

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Da gebe ich Dir recht.

Wohl noch vergessen zu schreiben, das nachdem er die Emailadresse geholt hat, eine neue Seite aufgerufen wird und dann da Daten eingiebt und so weiter.

DeddyH 16. Jan 2008 20:48

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Meinst Du damit, dass er die DocumentComplete-Methode nur einmalig bei der "EMail-Holen-URI" ausführen soll? Das würde ich ganz banal über ein privates Flag lösen.

EsLaVaToR 17. Jan 2008 17:02

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Glaube ich verdeutliche nochmal mein Prob!


Als erstes läd er dir URL im browser
WebBrowser2.Navigate('http://www.temporaryinbox.com/');

dann liest er die Textbox im browser aus (hier die neue Emailadresse)
New_INBOXEMAIL := WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('inbox').value;

dann soll er eine neue Seite ansteuern
WebBrowser2.Navigate('http://neueseite.de');

ein paar Eingabe in dieser Seite machen:

WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('Name').value := Name
WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('Kennwort').value := Kennwort
WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('Email').value := New_INBOXEMAIL

das Formular abschicken.

So, mein Problem ist es, wenn ich den Webbrowser mit der URL fütter, ist er noch garnicht fertiggeladen, wenn er schon die nächste Zeile Code ausführen will, indem er ein Eingabefeld ausliest. Er soll theoretisch erst die neue Zeile Code ausführen, wenn die DocumentComplete-Methode durchlaufen wurde (Die Seite fertig geladen ist).

und das dann so weiter, weiter weiter!!!

was nun ein privates Flöag ist, weiß ich leider nicht!

Hofffe jetzt kam es besser rüber.

DeddyH 17. Jan 2008 17:12

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Ich hatte das schon so verstanden. Versuch es mal so:
-Du definierst Dir eine Boolean-Variable im private-Abschnitt Deines Formulars (nennen wir sie mal "FirstRun").
-Diese Variable setzt Du auf true, bevor Du die erste Seite im WebBrowser aufrufst.
Delphi-Quellcode:
FirstRun := true;
 WebBrowser2.Navigate('http://www.temporaryinbox.com/');
Im OnDocumentComplete machst Du Folgendes:
Delphi-Quellcode:
if FirstRun then //erste Seite aufgerufen
  begin
    New_INBOXEMAIL := WebBrowser1.OleObject.document.forms.item(0).elements.item('inbox').value;
    WebBrowser2.Navigate('http://neueseite.de');
  end
else //zweite Seite aufgerufen
  begin
    WebBrowser1.OleObject.document.forms.item(0).elements.item('Name').value := Name;
    WebBrowser1.OleObject.document.forms.item(0).elements.item('Kennwort').value := Kennwort;
    WebBrowser1.OleObject.document.forms.item(0).elements.item('Email').value := New_INBOXEMAIL;
  end;
FirstRun := false; //wenn wir hier ankommen, war die erste Seite auf jeden Fall schon einmal geladen
Getippt und nicht getestet.

EsLaVaToR 17. Jan 2008 17:36

Re: Webbrowser warten bis fertig geladen, dann code weiter!
 
Ich denke so werde ich es mal machen!

werde aber auf einen integer zurückgreifen, da noch mehr aufrufe von unterschiedlichen Seiten erfolgen müssen.

zur Zeit habe ich 4 Timer benutzt, die sich nacheinander freischalten in 5 Sekundentakt. Nicht sauber aber geht.

Trotzdem ist deine ein wenig sauberer :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr.
Seite 1 von 2  1 2      

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-2025 by Thomas Breitkreuz