Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos


Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-09-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 540
Poder: 17
jhonalone Va por buen camino
TWebBrowser.CaptureBitmap No funciona.

Hola a todos.
Otro problema que seguro nadie más que yo ha tenido. La función del título no me funciona.

Seguro que es por que no sé hacerlo.

Bueno. Os cuento:
Código Delphi [-]
Imagen := TImage.Create(Self);
 //Imagen.Bitmap := WebBrowser1.CaptureBitmap;
 if Imagen.BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Canvas.Height.ToString);
         ShowMessage(Imagen.Bitmap.Height.ToString);
       end;

Con este código, Imagen.Bitmap no es nill y ambos mensajes retornan CERO.


Otra prueba:
Código Delphi [-]
 Imagen := TImage.Create(Self);
 Imagen.Bitmap := WebBrowser1.CaptureBitmap;
 if Imagen.BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Canvas.Height.ToString);
         ShowMessage(Imagen.Bitmap.Height.ToString);
       end;

Qué curioso, los dos mensajes retornan CERO.

Tres cosas me quedan claras después de estas pruebas:

1.- Imagen.BitMap, nunca es Nill, no importa si le asignamos el mapa de bits o no.

2.- Que seguramente debe haber algún truco, que yo no conozco, para que esto funcione.

3.- Si nadie se ha quejado de ello. No en la búsqueda de Google, ni en en este foro, ni en el foro de ayuda de Embarcadero es que el INÚTIL SOY YO. ( O nadie lo ha usado)

Por favor si alguien lo ha usado con éxito, que tenga la caridad de decirme cómo se hace.

Gracias de antemano. Y perdón por haberme metido en otro marrón más.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #2  
Antiguo 01-10-2018
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 a todos,

Yo probaría a usar un objeto "TBitmap" en lugar de un objeto "TImage", para empezar. Igual es absurdo, pero, probaría a ver. Por otro lado, comprobaría que el código funciona como se espera en otra plataforma, como pueda ser Windows. Si esto último funciona como se espera, tal vez la captura de la pantalla en Android requiera de algún permiso que la app no tiene.

P.D. Veo que tratas de capturar una imagen de un objeto "TWebBrowser"... ¿estás seguro de que el documento del mismo se ha cargado completamente antes de tratar de capturar una imagen? Supongo que sí, pero, tal vez deberías comprobarlo, puesto que, un documento "no completamente cargado" puede acaso no proporcionar la imagen que se espera.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 01-10-2018
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 a todos,

He querido probar yo mismo esto usando un TBitmap en lugar de un TImage: funciona en ambos casos como se espera, al menos en Windows. Me tiro a pensar que es una cuestión de permisos... aunque arriba dije que igual estos eran necesarios para capturar la pantalla en Android... ¡pero es que se está tratando de capturar una imagen de un objeto "TWebBrowser" y no la pantalla! En fin, que, probado en Windows y viendo que funciona... lo cierto es que habría que ver porqué no lo hace como se espera en Android.

P.D. Curiosamente, si capturamos la imagen de un "TWebBrowser" vacío, se obtiene el resultado que mencionas de que "Bitmap.Height = 0". Luego insisto en asegurarse de que el documento del "TWebBrowser" ha terminado de cargarse, antes de intentar la captura.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #4  
Antiguo 01-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 540
Poder: 17
jhonalone Va por buen camino
Muchas gracias. Dec.

Con TBitMap ya lo había probado. Con el mismo resultado.

Voy a ver cómo resuelvo lo de la carga de la página.

Inmediatamente antes tengo este código. Después se muestra la página cuando la solicito.

Código Delphi [-]
 WebBrowser1.Navigate('file://'+TPath.Combine(TPath.GetDocumentsPath, 'Pagina.htm'));
Sleep(5000);

Puede que no le haya dado tiempo de cargarla... Lo había pensado y había puesto el sleep por ése motivo.

Ahora acabo de probar lo siguiente:

Código Delphi [-]
procedure TForm1.WebBrowser1DidFinishLoad(ASender: TObject);
begin
  Imagen := TImage.Create(Self);
 Imagen.Bitmap := WebBrowser1.CaptureBitmap;
 if Imagen.BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Canvas.Height.ToString);
         ShowMessage(Imagen.Bitmap.Height.ToString);
       end;
end;

Con idéntico resultado.

Gracias por tus observaciones y por confirmarme que en Windows funciona.

Voy a intentarlo con los permisos, que no se me había ocurrido.

Saludos cordiales.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #5  
Antiguo 01-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 540
Poder: 17
jhonalone Va por buen camino
Hola, de nuevo.

No se me ocurre, qué permiso o permisos tengo que activar.

Probando esto:
Código Delphi [-]
procedure TForm1.WebBrowser1DidFinishLoad(ASender: TObject);
begin
 BitMap := TBitMap.Create;
 Bitmap := WebBrowser1.CaptureBitmap;
 if BitMap <> nil
 then  begin
         ShowMessage(WebBrowser1.Height.ToString);
         ShowMessage(Bitmap.Height.ToString);
       end;
end;

el resultado es que no emite ningún mensaje. Lo que está claro es que BitMap es nil. O sea, que no lo carga.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #6  
Antiguo 01-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 540
Poder: 17
jhonalone Va por buen camino
Hola.

Parece ser que no lo hace hasta que está visible la pantalla.

Pero no me sirve, pues la altura que me da es la altura en pixeles de la pantalla. No parece que capture toda la página web, sino la parte que está visible solamente.

Lo que yo necesito es la altura total de la página web. La de la pantalla ya la sé.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #7  
Antiguo 02-10-2018
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 a todos,

Cita:
Empezado por jhonalone Ver Mensaje
Hola.

Parece ser que no lo hace hasta que está visible la pantalla.

Pero no me sirve, pues la altura que me da es la altura en pixeles de la pantalla. No parece que capture toda la página web, sino la parte que está visible solamente.

Lo que yo necesito es la altura total de la página web. La de la pantalla ya la sé.

Saludos.
¿Pero al final conseguiste tomar la captura del navegador, no es cierto? Otra cosa es, en efecto, que la imagen que se obtiene no es la imagen completa de la página web, sino de la parte visible en el control "TWebBrowser". Realmente, no sé hasta qué punto sería posible conseguir lo que quieres, puesto que hay servicios de terceros que proporcionan algo así...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 03-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 540
Poder: 17
jhonalone Va por buen camino
Hola dec.

No he llegado a comprobar que la imagen era la esperada. Cuando he visto que no me daba CERO la altura del bitmap, y me estaba diciendo que no era nil, he supuesto que la imagen era la que aparecía en pantalla, puesto que antes de aparecer en pantalla siempre me daba CERO.

Saludos y gracias. Buscaré la manera de conseguir la altura del WebBrowser por otro camino. A ver si lo consigo. Me interesa la altura para adaptar la posición de la página a los distintos terminales y configuraciones.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
  #9  
Antiguo 03-10-2018
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 a todos,

Cita:
Empezado por jhonalone Ver Mensaje
Saludos y gracias. Buscaré la manera de conseguir la altura del WebBrowser por otro camino. A ver si lo consigo. Me interesa la altura para adaptar la posición de la página a los distintos terminales y configuraciones.
Pero... si lo que necesitas es conocer la altura del "TWebBrowser", ¿no te valdría con la propiedad "Height" de este?
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #10  
Antiguo 04-10-2018
jhonalone jhonalone is offline
Miembro
 
Registrado: sep 2007
Ubicación: Madrid
Posts: 540
Poder: 17
jhonalone Va por buen camino
Gracias por tu interés, David.

Es lo primero que intenté, pero la altura obtenida es la altura física en la pantalla del componente WebBrowser, y lo que yo necesito es la altura en pixeles del documento (página) contenido en el WebBrowser, es decir lo que se ve en la pantalla y lo que no se ve. Esto lo necesito para crear una función que equipare la sección visible en cada dispositivo, compensando así las distintas configuraciones.

Saludos.
__________________
"Pedid y se os dará; buscad y hallaréis ..." (Lc 11,9-10)
"...si no tengo caridad, nada soy..." (1 Cor 13,1-13)
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
¿No funciona el componente "TWebBrowser" en Delphi 64 bits? dec Varios 5 15-09-2016 14:53:03
esta function no me funciona en XE2 y si funciona en D6 darkbits Varios 1 06-11-2012 18:00:45
funciona bien en windows 7 64b pero en XP no funciona ASAPLTDA Varios 5 06-05-2011 17:24:50
TWebBrowser sin URL rafa_adrim Internet 1 20-10-2006 19:02:05
TWebBrowser RoyTan Internet 4 27-10-2003 23:06:09


La franja horaria es GMT +2. Ahora son las 12:47:45.


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