Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
El WebBrowser no se cierra

Saludos a todos los foristas:

Me he visto en la obligación de tener de desarrollar un explorador web para visualizar una página web, al mostrar esa página web en el componente WebBrowser todo funciona correctamente... peeeeeeeerooooooooo.

La página web que muestro tiene un botón (cerrar) que se supone cierra el explorador web, cuando yo lo pulso el formulario me aparece vacío, sin ningún contenido pero no se cierra.

He probado a usar los eventos OnQuit y OnExit del TWebBrowser y poner un self.Close e incluso un Application.Terminate pero esas líneas no llegan a ejecutarse nunca.

Que tengo que hacer para que al pulsar el botón de la página web mi aplicación se cierre.

Desde ya muchas gracias
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #2  
Antiguo 12-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Yo lo intentaría con el evento "OnBeforeNavigate2" del "TWebBrowser". Este cuenta con un parámetro de nombre "URL" que tal vez pudieras aprovechar para lo que te es menester. Échale un vistazo y cuentas qué tal te fue.

O sea, imagino algo así:

Código Delphi [-]
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if (URL = 'algo-que-identifica-que-se-quiere-cerrar') then
    Self.Close;
end;
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 12-07-2006 a las 23:42:44.
Responder Con Cita
  #3  
Antiguo 13-07-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
He probado a poner lo siguiente:

Código Delphi [-]
procedure TFrmPrincipalExplorer.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if (URL = 'https://recargas.alphyra.es/recargasWeb/') then
    Self.Close;
end;

En URL no tengo muy claro que tengo que poner y he puesto la url de la página por lo cual así la página ya no llega a mostrarse. Al poner la URL en blanco tampoco se cierra la página y el problema se mantiene.

Si conoces alguna solución para el componente TEmbeddedWB también me sirve. Muchas gracias
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #4  
Antiguo 13-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bueno. Mi idea era aprovechar el parámetro URL para ver si de ese modo podías averiguar que el usuario había pulsado en el botón "cerrar" situado en el documento HTML cargado en el "TWebBrowser".

O sea. Tú carga el documento en cuestión en el "navegador". En el evento mencionado anteriormente escribe algo así:

Código Delphi [-]
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  Caption := URL;
end;

No lo he comprobado, pero, tal vez al utilizar el botón "cerrar" del documento HTML en la variable "URL" tengas algo como "javascript:window.close()", o "algo", en definitiva, que te permitiera averiguar que se pulsó el botón de marras y pudieras a su vez cerrar el programa, ¿porque de eso se trataba no?

O sea, suponiendo que lo que digo funcione, y te encuentres algo como lo dicho en la variable URL, podrías codificar algo como esto:

Código Delphi [-]
procedure TForm1.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if (URL = 'javascript:window.close()') then
    Self.Close;
end;

No sé si es que no te funciona, o no lo has probado, o no me explico bien, o qué... no tengo el componente que dices instalado, aunque sería cuestión de minutos instalarlo, porque lo guardo por aquí. Tal vez, efectivamente, el componente que dices dé más juego que el "TWebBrowser original", pero, tal vez no te haga falta, no sea necesario... no sé.

Edito: ¿No tienes acceso al documento HTML de que estamos hablando, verdad? Es decir, no puedes editarlo según te parezca. ¿O sí? Lo digo porque de ese modo la cosa sería más sencilla, me parece. De todas maneras he hecho algunas pruebas y no parecen dar muy buenos resultados... así, a bote pronto...
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 13-07-2006 a las 00:25:14.
Responder Con Cita
  #5  
Antiguo 13-07-2006
Novás Novás is offline
Miembro
 
Registrado: oct 2003
Ubicación: Galicia
Posts: 146
Poder: 21
Novás Va por buen camino
Gracias dec, tu solución no sirve para este caso dada que la URL de la página que aparece al final, al pulsar el botón cerrar es la misma que ya aparece en pasos anteriores.

Por otro lado el componente que he citado antes tiene un evento, OnCloseQuery que me ha funcionado a la perfección.

Muchísimas gracias por tomarte un tiempo para contestar, gente como tú es la que hacen de este portal un sitio maravilloso.
__________________
Hay dos cosas infinitas: el Universo y la estupidez humana. http://www.cybertarjetas.net
Responder Con Cita
  #6  
Antiguo 13-07-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Las pruebas que yo realizé tampoco fueron del todo óptimas, ya lo dije. Sin embargo, por otro motivo: desde el propio documento HTML se lanzaba el diálogo "¿Quieres cerrar esta ventana?"... e hiciera lo que hiciera (cancelar o no dicho diálogo) el programa se cerraba fatalmente...

Pero, en fin. Me alegro que lo solucionaras. Yo sólo quería añadir un enlace a la página Web en donde encontrar el componente.

Edito: por cierto, que la página Web que enlazo me la encuentro cambiada desde la última vez que la visité. Parece que hay novedades además.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mi aplicación no se cierra Jesús Pena OOP 1 08-02-2006 20:10:56
La aplicación se cierra sim mas en Xp ! RGY Impresión 1 16-02-2005 22:30:45
forma que no cierra Dantael OOP 1 04-02-2005 15:33:06
Se Cierra Delphi JamesBond_Mx Conexión con bases de datos 4 24-03-2004 03:02:18
Se me cierra delphi... superhopi Conexión con bases de datos 5 07-07-2003 17:16:39


La franja horaria es GMT +2. Ahora son las 21:47:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi