WebView4Delphi

Descripción

WebView4Delphi es un proyecto de código abierto creado por Salvador Díaz Fau para incluir navegadores basados en Chromium dentro de aplicaciones realizadas con Delphi o Lazarus/FPC para Window.

Introducción

WebView4Delphi usa Microsoft Edge WebView2 Runtime y el paquete de NuGet Microsoft.Web.WebView2 para insertar un navegador web en aplicaciones VCL, FMX y LCL.

WebView4Delphi carga WebView2Loader.dll que se puede encontrar en el paquete NuGet e implementa todos los interfases descritos en la documentación de WebView2.

La última versión de WebView4Delphi usa Microsoft.Web.WebView2 NuGet 1.0.2478.35. Puede descargarlo usted mismo para extrar el archivo WebView2Loader.dll o usar la copia disponible en los directorios bin32 y bin64 del repositorio de WebView4Delphi.

Este diagrama muestra como funciona WebView4Delphi :

Diagrama de WebView4Delphi

Enlaces

Proyecto WebView4Delphi :

Microsoft Edge WebView2 Runtime :

Paquete NuGet de Microsoft.Web.WebView2 :

Proyecto Chromium :

Compatibilidad

Microsoft Edge WebView2 Runtime crea un navegador web basado en Chromium que requiere Windows 10, 11 o posterior para funcionar.

Microsoft tiene planeado dar soporte para MacOS y Linux en el futuro pero por ahora WebView2 solo funciona en Windows.

Si necesita insertar un navegador web en MacOS, Linux y Windows puede usar CEF4Delphi en lugar de WebView4Delphi.

Acerca de WebView2 Runtime

WebView2 Runtime se puede instalar en cada PC donde se ejecuta la plaicación con el navegador web incrustado. A esta versión se la llama evergreen y se actualiza automáticamente por Window.

Alternativamente también puede usar una versión fija de WebView2 Runtime y actualizarla manualmente cada vez que actualiza su aplicación.

La versión evergreen le permite tener un instalador para su aplicación más pequeño mientra Windows actualiza WebView2 Runtime con los últimos parches de seguridad.

El navegador web incrustado también se actualizará y eso significa que su aplicación debería ser probada regularmente para prevenir problemas causados por características desfasadas del navegador, errores internos del navegador, etc.

También debe recordar que no todos los PCs se actualizan a la vez. Algunos usuarios en entornos empresariales pueden recibir las actualizaciones de Windows muy tarde y su aplicación deberá estar preparada para funcionar perfectamente con varias versiones del navegador.

Para evitar todos esos problemas puede usar la versión fija de WebView2 Runtime pero entonces tendrá que actualizarlo manualmente para corregir problemas de seguridad en el navegador, con lo que el instalador de su aplicación será más grande.

La versión evergreen de Microsoft Edge WebView2 Runtime ya se encuentra instalada en Windows 11 y todas las demos están configuradas para usar esa versión.

Instalación

Para compilar e instalar WebView4Delphi en Delphi XE2, XE3, XE4, XE6, XE7, XE8, 10, 11 o 12 hay que seguir los siguientes pasos :

  1. Descargar la última versión de WebView4Delphi desde GitHub.
  2. Descomprimir WebView4Delphi en un directorio y asegúrese de que su usuario tiene privilegios de escritura en ese directorio.
  3. Ejecutar Delphi.
  4. Abrir el archivo packages\WebView4Delphi_group.groupproj.
  5. Si desea instalar los componentes VCL y FMX entonces seleccione la opción Projects→Build all projects del menú. Si esa opción falla use la opción Build de WebView4DelphiVCLRTL.bpl, WebView4DelphiFMXRTL.bpl, WebView4DelphiVCL_designtime.bpl y WebView4DelphiFMX_designtime.bpl individualmente (en ese orden). Cuando termine de compilar seleccione la opción Install del menú contextual en WebView4DelphiVCL_designtime.bpl y WebView4DelphiFMX_designtime.bpl.
  6. Si solo necesita instalar los componentes VCL entonces use la opción Build en WebView4DelphiVCLRTL.bpl y luego la optioón Install de WebView4DelphiVCL_designtime.bpl.

Para compilar e instalar WebView4Delphi en Delphi 6, 7, 8, 2005, 2006, 2007, 2009, 2010 o XE hay que seguir los siguientes pasos :

  1. Descargar la última versión de WebView4Delphi desde GitHub.
  2. Descomprimir WebView4Delphi en un directorio y asegúrese de que su usuario tiene privilegios de escritura en ese directorio.
  3. Ejecutar Delphi.
  4. Abrir el archivo WebView4Delphi.dpk desde Delphi el cual contiene componentes VCL.
  5. Hacer clic en el botón Compile.
  6. Hacer clic en el botón Install.

Para compilar e instalar WebView4Delphi en Lazarus hay que seguir los siguientes pasos :

  1. Descargar la última versión de WebView4Delphi desde GitHub.
  2. Descomprimir WebView4Delphi en un directorio y asegúrese de que su usuario tiene privilegios de escritura en ese directorio.
  3. Ejecutar Lazarus.
  4. Abrir el archivo packages\webview4delphi.lpk desde la opción del menú Package→Open Package File (*.lpk)....
  5. Hacer clic en el botón Compile en la ventana del paquete.
  6. Hacer clic en el botón Use y seleccionar la opción Install.
  7. Pulsar el botón Si cuando Lazarus pregunte si se desea recontruir Lazarus.
  8. Lazarus instalará WebView4Delphi y se reiniciará en unos pocos segundos.

Primeros pasos

Antes de usar WebView4Delphi por primera vez es muy recomendable leer la documentación de Microsoft Edge WebView2 Runtime.

Tras instalar WebView2 Runtime y WebView4Delphi ya puede compilar la demo SimpleBrowser.

Fíjese en que la unidad principal tiene una sección initialization donde se crea y configura GlobalWebView2Loader. El último paso en esa sección es la llamada a GlobalWebView2Loader.StartWebView2 que cargará WebView2Loader.dll y creará el entorno del navegador global de manera asíncrona.

No se tiene que preocupar por destruir GlobalWebView2Loader porque WebView4Delphi lo hará por usted en una de sus secciones de finalización.

El entorno global creado por GlobalWebView2Loader se utilizará por todos los navegadores creados en la aplicación.

No es posible predecir si se creará primero en entorno global o la ventana principal.

SimpleBrowser intenta crear el navegador en el evento Tform.OnShow pero usa un TTimer en caso de que el entorno global encesite algo más de tiempo para crearse.

WebView4Delphi usa dos componentes para crear un navegador web. En el caso de las aplicaciones VCL o LCL usa TWVBrowser y TWVWindowParent. En el caso de las aplicaciones FMX usa TWVFMXBrowser y TWVFMXWindowParent.

TWVWindowParent y TWVFMXWindowParent solo son controles usados por WebView2 para mostrar los contenidos web.

Los componentes más importantes son TWVBrowser y TWVFMXBrowser porque encapsulan la mayor parte de los métodos, propriedades y eventos de WebView2.

Los componentes WindowParenty Browser están enlazados y es necesario establecer el valor de la propiedad Browser. Hay que asignar la instancia de TWVBrowser a la propeidad TWVWindowParent.Browser o en su caso a TWVFMXWindowParent.Browser.

El navegador se crea de manera asíncrona con las llamadas TWVBrowser.CreateBrowser o TWVFMXBrowser.CreateBrowser. Cuando esté totalmente inicializado se ejecutará el evento TWVBrowser.OnAfterCreated y a partir de entonces puede usar sus métodos.

SimpleBrowser comenzará a cargar la URL que se especificó en la propiedad TWVBrowser.DefaultURL justo antes de que se ejecute el evento OnAfterCreated.

Si examina otras demos o comienza a utilizar los eventos de TWVBrowser verá que TWVBrowser tiene como eventos a todas los metodos Invoke declarados por los delegados de WebView2.

Todos esos eventos poseen casi los mismos tipos de parámetros que los métodos Invoke y la mayoría de ellos tiene un interfaz llamado aArgs. Si necesita usar ese interfaz puede usar la clase envoltorio correspondiente que puede encontrar en la unidad uWVCoreWebView2Args.

Por ejemplo, el evento TWVBrowser.OnDownloadStarting tiene un parámetro aArgs de tipo ICoreWebView2DownloadStartingEventArgs.

Como puede ver en la demo MiniBrowser, todo lo que necesita para usar aArgs es envolverlo con la clase TCoreWebView2DownloadStartingEventArgs de esta manera :

TempArgs := TCoreWebView2DownloadStartingEventArgs.Create(aArgs);

Todos los interfases de WebView2 tienen una clase envoltorio con el mismo nombre pero sustituyendo la I inicial por una T.

Otra de las peculiaridades que podrá ver en WebView4Delphi es que casi todos los parámetros de tipo string se han reemplazado por el tipo wvstring porque WebView2 usa WideString intérnamente.

Los usuarios de Delphi pueden asignar variables wvstring a string directamente pero los usuarios de Lazarus tienen que usar UTF8Decode y UTF8Encode para convertirlas.

Sobre el nombre

WebView4Delphi es solo un numerónimo y se debería interpretar como WebView for Delphi, es decir WebView para Delphi en español. No significa que esté basado en WebView4.

Más información en otros idiomas

Cómo ayudar

Si desea ayudar en este proyecto puede realizar una donación pulsando el siguiente botón :

También puede usar Patreon para ayudar a este proyecto :

Patreon

O patrocinar este proyecto en GitHub :

O patrocinar este proyecto en Liberapay :

Donate using Liberapay

También puede ayudar dando a conocer este proyecto a sus amistades, compartiendo los mensajes de este proyecto en las redes sociales, escribiendo artículos sobre este proyecto en su página web, haciendo sugerencias, informando sobre errores, etc.

Si realiza compras en Internet también puede ayudar usando estos enlaces para sus compras :

Declaración de divulgación: Este sitio y BriskBard contienen enlaces de afiliado y eso quiere decir que yo puedo recibir una comisión si usted realiza una compra usando esos enlaces. Como socio de eBay obtengo una comisión con dichas compras.




Artículo actualizado el 23 de abril de 2024.

Uso de cookies

Por el hecho de navegar en este sitio acepta usar nuestras cookies. Solo verá este mensaje una vez.
Más información
Cerrar