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.
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.3179.45. 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 :
Proyecto WebView4Delphi :
Microsoft Edge WebView2 Runtime :
Paquete NuGet de Microsoft.Web.WebView2 :
Proyecto Chromium :
Microsoft Edge WebView2 Runtime crea un navegador web basado en Chromium que requiere Windows 10, 11 o posterior para funcionar.
Microsoft tenía planeado dar soporte para MacOS y Linux pero finalmente decidió no proseguir con esos planes. WebView2 solo funciona en Windows.
Si necesita insertar un navegador web en MacOS, Linux y Windows puede usar CEF4Delphi en lugar de WebView4Delphi.
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 en la mayor parte de los dispositivos con Windows 10. Todas las demos están configuradas para usar esa versión.
Para compilar e instalar WebView4Delphi en Delphi XE2, XE3, XE4, XE6, XE7, XE8, 10, 11 o 12 hay que seguir los siguientes pasos :
Para compilar e instalar WebView4Delphi en Delphi 6, 7, 8, 2005, 2006, 2007, 2009, 2010 o XE hay que seguir los siguientes pasos :
Para compilar e instalar WebView4Delphi en Lazarus hay que seguir los siguientes 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 WindowParent
y 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.
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.
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 :
O patrocinar este proyecto en GitHub :
O patrocinar este proyecto en 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 7 de abril de 2025.