Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebbrowser, Link im gleichen Fenster öffnen (https://www.delphipraxis.net/15032-twebbrowser-link-im-gleichen-fenster-oeffnen.html)

Matze 20. Jan 2004 19:31


TWebbrowser, Link im gleichen Fenster öffnen
 
Hi!

Ich will einen Link, der normalerweise in einem neuen Fenster geöffnet wird, in meinem TWebbrowser anzeigen, ohne eine neue Form, etc. zu erzeugen, da die Form aufwenid gestaltet ist.

Mit Frames kann ich nicht umgehen.

Diesen Laink hier hab ich gefunden, er ist aber auch nicht das Wahre ;)


Kann mir jemand helfen?

Evian 21. Jan 2004 11:33

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
Ich hätte eine Lösung für Dich, die zwar nicht besonders Elegant ist, aber funktioniert:

1. Du musst als erstes die URL des Links rausbekommen.
Dazu legst Du einen zusätzlichen, versteckten Browser auf Deine Form und
übergibst im WebBrowser1NewWindow Event des Hauptbrowsers die ppDisp
Variablen an diesen zweiten Webbrowser:

Code:

procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
begin
 ppDisp := WebBrowser2.Application;
end;
Wenn dann diese URL im zweiten Webbrowser geladen wird hast Du seine URL
und kannst zum einen diese an den Hauptwebbrowser übergeben und zum anderen
den Ladevorgang des zweiten Webbrowsers abbrechen:

Code:

procedure TForm1.WebBrowser2BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
BEGIN
    Webbrowser1.navigate(URL)
    cancel := TRUE;
END;

Naja wie gesagt, ist sicher nicht die beste Lösung aber es funzt.
Vielleicht noch einen Tipp, wenn Du aus der ppDisp die URL rausbekommen
würdest, dann bräuchtest Du gar keinen 2ten Webbrowser, aber wie
das geht weiß ich nicht.

MFG

Evian

Matze 21. Jan 2004 12:41

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
OK, danke.
Es geht tatsächlich :)

Falls es jedoch die Möglichkeit gibt, dies ohne einen 2. TWebBrowser zu realisieren, dann wäre mir das etwas lieber ;) aber so geht's im Moment auch, nur hat man die doppelte Ladezeit :(

CTV 21. Jan 2004 13:36

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
so müsste das mit einem gehen:
Delphi-Quellcode:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
var
  NewWindow: TForm1;
begin
  // Eine neue Instanz wird erstellt
  NewWindow := TForm1.Create(self);

  NewWindow.Show;
  ppDisp := NewWindow.Webbrowser1.DefaultDispatch;
end;
Greetz Cyrus

Evian 21. Jan 2004 13:41

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
Zitat:

Zitat von CTV
so müsste das mit einem gehen:
Delphi-Quellcode:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);
var
  NewWindow: TForm1;
begin
  // Eine neue Instanz wird erstellt
  NewWindow := TForm1.Create(self);

  NewWindow.Show;
  ppDisp := NewWindow.Webbrowser1.DefaultDispatch;
end;
Greetz Cyrus

Du musst auf die Frage achten! Er wollte das ganze eben nicht auf einer neuen Form, sondern im Webbrowser auf der (ersten)Hauptform.

Evian 21. Jan 2004 13:43

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
Zitat:

Zitat von Matze
nur hat man die doppelte Ladezeit :(

nein keine Doppelte Ladezeit, denn in dem Moment wo Du die URL hast, wird der Ladevorgang abgebrochen!

Code:

Webbrowser1.navigate(URL)
    cancel := TRUE;

Matze 21. Jan 2004 13:44

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
Cool!

Nur wird die Form bei mir 2x erstellt, komisch :gruebel:

CTV 21. Jan 2004 13:49

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
Dan würd ichs so machen:

Zu erst muss man die Variable newwindow global deklarieren also oben bei implementation und nicht in der procedure
Delphi-Quellcode:
implementation
var
newwindow:TForm1;
Nun wird die Procedure vom alten post so umgeschrieben:

Delphi-Quellcode:
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject;
  var ppDisp: IDispatch; var Cancel: WordBool);

begin
NewWindow := TForm1.Create(self);
ppDisp := NewWindow.Webbrowser1.DefaultDispatch;
newwindow.WebBrowser1.OnBeforeNavigate2:=losgehts;
end;
Jetzt schreiben wir uns zuletzt die losgehts procedue:
Delphi-Quellcode:
procedure TForm1.losgehts(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
webbrowser1.Navigate(url);
end;
Ich denke so sollte es laufen :)

Greetz Cyrus

Matze 21. Jan 2004 17:01

Re: TWebbrowser, Link im gleichen Fenster öffnen
 
Großartig!! :thumb:

Geht einwandfrei!

Es gibt zwar beim Beenden noch ne kleine Exception, aber das krieg ich bestimmt noch hin ;)

Vielen Dank!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:21 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