PDA

Ver la Versión Completa : Problema con WebBrowser y OnNewWindow


jomadi04
31-05-2011, 17:59:30
Buenas, tengo un problema con el webbrowser y el evento onnewwindow. Lo que pretendo es que al pulsar sobre un enlace que se abriría en nueva ventana (o pestaña), que se abra sobre el mismo navegador en el que se pulsó el enlace (que es el único que hay) y que no abra un internet explorer.

Ya sé que se ha tratado algo sobre el tema, pero por más que he buscado no he encontrado nada que me funcione y sí, he usado el buscador del foro y me he leído prácticamente todos los mensajes donde se mencionaba el componente webbrowser.
he probado, aunque no me ha funcionado esto:
with Tceti.Create(nil) do
ppdisp:=webbrowser1.Application;

gracias de antemano

beginner01
31-05-2011, 19:21:39
saludos.

con este codigo se te abrira en una nueva ventana de tu aplicación


procedure TForm1.wb1NewWindow2(Sender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
var
ventana2: TForm1;
begin
Application.CreateForm(tForm1,ventana2);
ventana2.wb1.RegisterAsBrowser := true;
ppDisp := ventana2.wb1.Application;
ventana2.Top:=ventana2.Top+20;
ventana2.Left:=ventana2.left+20;
ventana2.Show;

end;

jomadi04
01-06-2011, 08:55:16
saludos.

con este codigo se te abrira en una nueva ventana de tu aplicación

Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure TForm1.wb1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); var ventana2: TForm1; begin Application.CreateForm(tForm1,ventana2); ventana2.wb1.RegisterAsBrowser := true; ppDisp := ventana2.wb1.Application; ventana2.Top:=ventana2.Top+20; ventana2.Left:=ventana2.left+20; ventana2.Show; end;


Ese código está bien si quieres que se abra otra ventana de tu aplicación, pero yo lo que quiero hacer es que lo que se abriría en una nueva ventana del navegador cargue sobre el navegador que estoy utilizando.

gracias por tu respuesta

jomadi04
01-06-2011, 09:53:09
bueno familia, por si a alguien le interesa acabo de dar con la solución, casi de casualidad (como los grandes descubrimientos del hombre jaja) y por si a alguien le puede venir bien es esta:

procedure Tform1.NuevaVentana(ASender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
var
carga:TWebBrowser;
Documento : IHtmlDocument2;
elemento : IHtmlElement;
nuevadir:string;
begin
carga:=TWebBrowser(aSender);
Document := carga.Document as IHTMlDocument2;
elemento:=Documento.activeElement;
nuevadir:=elemento.toString;
Cancel:=true; //para evitar que se abra la nueva ventana, ya sea de mi aplicación o de IE
webbrowser1.Navigate(nuevadir);
end;


creo que se puede dar por cerrado el tema e incluso trasladar la solución a trucos, porque seguro que a más de uno le entra esta duda en algún momento.

Un saludo!