![]() |
überprüfen ob dokument übertragen wurde
hallo leute
wie kann ich beim delphi webbrowser feststellen wann eine website fertig geladen ist? ich habs mit webbrowser1.ondownloadcomplete probiert. nur schnall ich nicht wie ich das funzt... kann mir jemand helfen?? :freak: grüße an alle |
Hallo,
OnDocumentComplete. OnDownloadComplete. OnNavigateComplete2. Was gefällt Dir an denen nicht? Vielleciht solltest Du uns einfach sagenw as Du vor hast. Grüsse, Daniel :hi: |
mein programm soll solange pause machen, bis das document übertragen wurde...
wie lös ich das?? :bounce1: Greetz und danke für die Antwort |
Zitat:
Du benötigst OnDocumentComplete, dieses Ereignis wird ausgelöst, wenn eine Seite geladen wurde. Benutzt die zu ladende Seite aber Frames, sieht das ganze etwas anders aus. Für weitere Informationen, suche mal hier im Forum nach OnDocumentComplete oder WebBrowser. |
verstehe das nicht so richtig. was für ein ereignis wird ausgelöst....ich wollte zum beispiel versuchen einer variable (als int deffiniert) von 0 auf 1 zu setzen, wenn das OnDocumentComplete ereignis ausgelöst wird:
Code:
das sieht a bissel komisch aus und funktioniert auch nicht...
procedure TForm1.Button1Click(Sender: TObject);
var over : integer; begin webbrowser1.Navigate('http://www.google.de'); webbrowser1.OnDocumentComplete := over :=1 end; end. |
Hallo,
OnDocumentComplete ist eine eigene Prozedur!
Delphi-Quellcode:
Statt der MEssage setzt Du da Deine Variable!
procedure TForm1.Button4Click(Sender: TObject);
begin WebBrowser1.Navigate('http://google.de'); end; procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin ShowMessage('Blupp'); end;
Delphi-Quellcode:
Grüsse, Daniel :hi:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant); begin MyIntVar := 1; end; |
hmm aber bei.
Code:
Bekomm ich die Meldung Undeffinierter Bezeichner 'WebBrowser1DocumentComplete'
procedure TForm1.Button1Click(Sender: TObject);
var over : integer; begin webbrowser1.Navigate('http://www.google.de'); end; procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin ShowMessage('Blupp'); end; end. beim compilieren |
:mrgreen:
Ich nehme an Du hast den COde einfach Kopiert und bei Dir eingefügt, also, richtiger Weg: Klick den WebBrowser an, dann im OI auf Ereignisse, dann ein Doppelklick auf OnDocumentComplete, dann wird die Prozedur autom. angelegt und zwar mit! der deklaration im interface-Teil, sprich in der Klasse TForm1! Denn da oben fehlt die zeile, damit es geht. ;) Grüsse, Daniel :hi: |
gut so geht es...aber eine frage ist dann nur...
die integer variable "over" ist dann nur innerhalb der procedur von ondocumentload gültig. eigentlich wollte ich in einer while schleife so lange die variable over prüfen bis sie 1 ist und dann eine andere webseite aufrufen...wie mach ich das am Besten?? danke für Deine Hilfe |
Zitat:
Mach doch z.B. eine globale Integer-Variable, oder besser wäre sogar Boolean.
Delphi-Quellcode:
In welcher Prozedur Du jetzt auf MyIntVar/MyBoolVar zugreifst ist egal, das ist dann aus allen möglich. Egal wo setzen und egal wo testen um andere Sachen dann zu machen...
var
Form1: TForm1; MyIntVar: Integer; MyBoolVar: Boolean; implementation //Hier kommen dann die ganzen Prozeduren Grüsse, DAniel :hi: |
hmm ein problem ist, dass ich dann das was ich machen wollte gar nicht machen kann, wenn dieses ondocumentload eine eigene prozedur ist...
ich wollte eigentlich ein memo nehmen und in dieses memo zeile für zeile verschiedene URL's eintragen...der soll anfangen die erste url zu laden, dann abwarten bis das document übertragen wurde und dann die nächste URL aus dem Memo laden usw. Ich zerbrech mir den kopf aber ich kanns dann weder über ne for-schlife noch über ne while schleifen lösen, da die 2 prozeduren undabhängig voneinenader laufen....mist... Weiß einer eine Lösung...Mir qualmt der Kopf... Grüße an alle! :freak: :cry: |
Moin Cookie Eater,
Du arbeitest das Memo in einer For Schleife ab. Bevor eine Seite geladen wird, setzt Du ein Flag. Jetzt wird das Laden der Seite gestartet. Anschliessend kommt eine While Schleife mit Application.ProcessMessages, die erst verlassen wird, wenn das Flag wieder gelöscht ist, und dies passiert im OnDocumentComplete o.ä. Jetzt kommt der Rest der For Schleife. Ggf. solltest Du vielleicht noch einen Abbruch Button vorsehen, der das Flag auch zurücksetzen kann. Das Flag muss nicht unbedingt ein Boolean sein. Dann kannst Du ggf. unterscheiden, ob denn nun ein Abbruch für das akutelle Dokument angefordert wurde, oder für dieses und alle folgenden Dokumente. |
Zitat:
Code:
problem ist, dass sich das programm aufhängt...habe das dumpfe gefühl, dass der in der while schleife hängen bleibt...aber das kann eigentlich nicht sein, denn irgendwann ist ja loaddone = 1 und damit müsste er diese schleife verlassen...for i := 0 to 2 do begin webbrowser1.Navigate(memo1.Lines[i]); while loaddone = 0 do begin //tue nichts und warte bis seite geladen end; loaddone := 0; end; mache ich es aber so:
Code:
geht es :freak: ...ist der selbe code nur das ich mir solange die seite nicht geladen wurde eine meldung 'hallo' ausgeben lasse...warum hängt der sich bei ersterem beispiel auf??for i := 0 to 2 do begin webbrowser1.Navigate(memo1.Lines[i]); while loaddone = 0 do begin showmessage ('hallo'); end; loaddone := 0; end; das mit der messagebox iss mist. habe kein bock mit jedes mal daneben zu setzen und die message mit ok zu bestätigen... sieht hier jemand durch??? Grüße |
Moin Cookie Eater,
Zitat:
|
ahso....sorry wusste gar nicht, dass Application.ProcessMessages ne anweisung ist....was genau bedeutet Application.ProcessMessages eigentlich....soviel wie tue nichts???
auf alle fälle funzt jetzt alles soweit... :hello: :hi: BIG BIG THNX!!! |
Moin Cookie Eater,
Application.ProcessMessages verarbeitet anstehende Windows Messages, und kehrt erst dann zurück. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:39 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-2025 by Thomas Breitkreuz