Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebbrowser frame neu laden warten bis fertig? (https://www.delphipraxis.net/94629-twebbrowser-frame-neu-laden-warten-bis-fertig.html)

gandime 24. Jun 2007 14:47


TWebbrowser frame neu laden warten bis fertig?
 
Hi,
ich habe bei meiner TWebbrowser Komponente ein Problem:

Ich habe eine Seite geladen mit zwei Frames.
dann lade ich einen der beiden Frames mit einer anderen inetadress mit folgendem code:

Delphi-Quellcode:
var
  ov: OleVariant;
begin
  web.Navigate('http://www.xyz.de','','Hauptframe',ov);
end;
blos wenn ich jetzt warte bis die Procedure DocumentComplete ausgelöst wird weiss ich nicht ob der komplette Frame geladen wurde oder nur ein Teil.
Code von DocumentComplete:

Delphi-Quellcode:
procedure TForm1.WebDocumentComplete(ASender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
var
  CurWebrowser: IWebBrowser;
  TopWebBrowser: IWebBrowser;
begin
  CurWebrowser := pDisp as IWebBrowser;
  TopWebBrowser := (ASender as TWebBrowser).DefaultInterface;
  if CurWebrowser = TopWebBrowser then
  begin
    b_web_f:=true;
    showmessage('haupt');
  end
  else
  begin
    showmessage('sub');// dieses wird bestimmt 5 mal wärend des ladens des neuen Frames ausgelöst (es ist aber nie die selbe Anzahlt!)
  end;
end;
Wie erkenne ich ob der Ladevorgang abgeschlossen is?

mfg
gandime

marabu 24. Jun 2007 18:31

Re: TWebbrowser frame neu laden warten bis fertig?
 
Hallo,

aufgrund des propagierten Schreibfehlers vermute ich die Quelle deines Codes in diesem Beitrag: TWebBrowser OnDocumentComplete

Ohne deine Änderungen funktioniert der dort angegebene Code ausgezeichnet.

Getestet habe ich mit dem Beispiel aus SelfHTML: FrameSet

Grüße vom marabu

gandime 24. Jun 2007 20:08

Re: TWebbrowser frame neu laden warten bis fertig?
 
egl is meine Quelle diese.
aber geholfen is mir damit auch nicht, da ich ja nie genau weiss ob der Frame fertig geladen is!

edit:
so ich habs jetzt nachdem ich den neuen frame geladen habe refreshe ich einfach ;-) dann wird die ondocumentchange richtig aufgerufen, wenn ich das jetzt alles auf dem ersten blick richtig sehe

marabu 25. Jun 2007 06:37

Re: TWebbrowser frame neu laden warten bis fertig?
 
Guten Morgen.

Zitat:

Zitat von gandime
egl is meine Quelle diese .

Das ist vermutlich eine Kopie (Eigentlich generell schade, dass man einem Beitrag im SDC selten sein Erstellungsdatum ansieht - oder übersehe ich da etwas?).

Zitat:

Zitat von gandime
... aber geholfen is mir damit auch nicht, da ich ja nie genau weiss ob der Frame fertig geladen is! ...

Hier verstehe ich dich nicht. Sobald das Ereignis OnDocumentComplete() gefeuert wird und du in pDisp deinen Frame erkennst, ist der Code dieses Frames vollständig geladen und steht als HTML DOM zur Verfügung. Genauer geht es doch gar nicht!

Freundliche Grüße

gandime 25. Jun 2007 08:58

Re: TWebbrowser frame neu laden warten bis fertig?
 
das OnDocumentComplete Ereignis wird öfters ausgelöst! und ich weiss auch nicht warum...

marabu 25. Jun 2007 10:18

Re: TWebbrowser frame neu laden warten bis fertig?
 
Es ist normal, dass OnDocumentComplete() mehrfach gefeuert wird, wenn du mehrere Frames aktualisierst. Der in #2 verlinkte Code zeigt dir ja die Namen der Frames. Sind sie verschieden oder ist es immer der gleiche Frame?

gandime 25. Jun 2007 10:21

Re: TWebbrowser frame neu laden warten bis fertig?
 
es sind meist unterschiedliche

marabu 25. Jun 2007 10:41

Re: TWebbrowser frame neu laden warten bis fertig?
 
Wenn du magst, dann baue ein Testszenario für mich auf und ich erkläre dir was da passiert. Oder gibt es öffentlich zugängliche URLs, mit denen ich testen kann?

gandime 25. Jun 2007 11:44

Re: TWebbrowser frame neu laden warten bis fertig?
 
ich hab gerade gemerkt das die Frames zwar immer unteschiedlich geladen werden und mit verschiedenen Namen aber einer is immer gelich und das is der den ich brauche :-)
also danke für deine Bemühungen und deine Hilfe jetzt gehts


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz