![]() |
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 ![]() Kann mir jemand helfen? |
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:
Wenn dann diese URL im zweiten Webbrowser geladen wird hast Du seine URLprocedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); begin ppDisp := WebBrowser2.Application; end; 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 |
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 :( |
Re: TWebbrowser, Link im gleichen Fenster öffnen
so müsste das mit einem gehen:
Delphi-Quellcode:
Greetz Cyrus
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; |
Re: TWebbrowser, Link im gleichen Fenster öffnen
Zitat:
|
Re: TWebbrowser, Link im gleichen Fenster öffnen
Zitat:
Code:
Webbrowser1.navigate(URL) cancel := TRUE; |
Re: TWebbrowser, Link im gleichen Fenster öffnen
Cool!
Nur wird die Form bei mir 2x erstellt, komisch :gruebel: |
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:
Nun wird die Procedure vom alten post so umgeschrieben:
implementation
var newwindow:TForm1;
Delphi-Quellcode:
Jetzt schreiben wir uns zuletzt die losgehts procedue:
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;
Delphi-Quellcode:
Ich denke so sollte es laufen :)
procedure TForm1.losgehts(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); begin webbrowser1.Navigate(url); end; Greetz Cyrus |
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 10:55 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