jun 112014
 

Buenas

Todos sabemos que el TWebBrowser encapsula el Internet Explorer instalado en el sistema. Pero los que habéis trabajado o usado en profundidad el TWebBrowser, seguro que habéis llegado al punto en que la página web que queríais mostrar en él no se visualizaba igual que en el propio Internet Explorer. Esto me ha pasado a mi intentando mostrar en un TWebBrowser un heatmap mediante la API de Google Maps como el que podemos ver en esta página. Entonces…. por qué si una página web se visualiza bien en IE no lo hace igual en el TWebBrowser?

Resulta que nuestro amigo TWebBrowser, cuando la versión de nuestro IE es inferior a la 8 (de la 5 a la 7) sí que muestra las páginas tal y como se visualizan en el propio IE (con las limitaciones que tienen estas viejas versiones del IE, claro está). En cambio, cuando la versión de IE instalada en el sistema es la 8 o superior, por defecto, nuestro TWebBrowser mostrará las páginas web en modo de compatibilidad, por lo que las visualizará como si de un IE 7 se tratara. Continue reading »

jun 272013
 

Buenas,

Haciendo una aplicación en la que se hace un cierto uso del TWebBrowser, me he encontrado de que éste no gestiona la tecla Enter, ni para aceptar un formulario cuando estamos en un Input tipo Text ni para añadir un salto de línea en un TextArea.

Buscando por internet he encontrado la solución en los foros de Embarcadero. No obstante, quiero poner aquí la solución al problema dado que me parece muy chocante que a estas alturas este problema con el TWebBrowser no esté solucionado.

Continue reading »

nov 022011
 

Buenas,

Haciendo unas aplicaciones que usan el componente TWebBrowser, me surgió la necesidad de interactuar con las páginas cargadas en él, en concreto el manejo de los formularios. Consultando a Google llegué a delphi.about.com donde encontré una serie de artículos que me ayudaron a solucionar mis necesidades.

Gracias a estos artículos he creado una clase (TWebControl) que engloba buena parte de lo expuesto en esos artículos.

Entre las funciones interesantes que tiene esta clase tenemos:

  • procedure WebLinks: se encarga de carturar todas las etiquetas «a href» que contenga la página y las pone en la propiedad Links.
  • procedure WebFormNames: se encarga de capturar todos los formularios que contenga la página y los almacena en la propiedad Forms.
  • procedure WebFormFields: dado el nombre de un formulario, se encarga de rellenar la propiedad Fields con los campos del mismo.
  • procedure WebFormSetFieldValue: dado un formulario y un campo del mismo, establece un valor a dicho campo.
  • procedure WebFormSubmit: dado un formulario, lo acepta.
  • function WebFormFieldValue: dado un formulario y un campo del mismo, devuelve el valor que contiene.
  • function WebHTMLCode: devuelve el código HTML de la página web.
  • function WebContent: devuelve el contenido de la página web.
  • procedure WebSaveAsHTML: dado un nombre de archivo, guarda la página web.
  • procedure WebLoadHTML: dado un código HTML, lo carga directamente en el TWebBrowser.
  • procedure WebAddHTML: dado un código HTML, lo añade a la página existente.
  • procedure WebPrintWithoutDialog: imprime la página web sin mostrar ningún dialogo.
  • procedure WebPrintWithDialog: lanza el diálogo de impresión.
  • procedure WebPrintPreview: realiza una previsualización de la impresión de la página web.
  • procedure WebPrintPageSetup: realiza una llamada al diálogo del setup.

La forma de funcionar de la clase es sencilla. Basta con crear un objeto de la misma pasándole en el constructor el objeto TWebBrowser que contenga la página a controlar.

Como siempre, podéis descargaros el programa demo y la unit con la clase desde aquí.

Nos leemos