Como hemos visto en el ejemplo anterior podemos utilizar un control OCX que resulta ser un navegador Web incluido en un control de nuestro form y con esto podemos navegar por Internet.
Pero este control nos permite hacer bastantes más cosas, como todos sabemos desde una ventana de Internet también podemos abrir un HTML que se encuentra en el disco duro local del PC, pero no sólo esto sino que podemos usarlo para abrir otros tipos de archivos como puede ser un archivo Adobe Acrobat Reader, es decir un PDF ya que existe un ActiveX que se instala en el PC al instalar este programa y ni tan siquiera tenemos que preocuparnos de usar este ActiveX sino que el explorador de Internet se encarga de ello.
Veamos con detalle los ejemplos que incluye el de Xailer que aquí dejo a vuestra disposición. Proyecto
He dividido el ejemplo en cuatro apartados incorporando para ello un folder de cuatro pestañas y cada ejemplo se verá en cada una de ellas.
Primer ejemplo: visualizar un PDF.
Este Folder contiene simplemente un botón para seleccionar el archivo PDF deseado, un label para mostrar el nombre del archivo seleccionado y un Bevel que como vimos en el ejemplo anterior contiene el OCX WebBrowser alineado a toda su extensión “alClient”.
Pulsando sobre el botón recurro a un TFileOpenDlg, un diálogo de apertura de archivos con la condición de que el usuario abra un PDF, controlo que devuelva .F., en cuyo caso el usuario ha cancelado el diálogo y no hago nada, me salgo del método Return Nil.
METHOD Button1Click( oSender ) CLASS TForm1
::oFileOpenDlg1:cFilter:="PDF Files (*.pdf)|*.pdf|"
If ! ::oFileOpenDlg1:Run()
Return Nil //Si el usuario cancela el diálogo
Endif
//Tomo el nombre del archivo seleccionado
::cPdfFile:=::oFileOpenDlg1:cFullFileName
//Lo muestro en el label
::oLabel1:cText:=::cPdfFile
//Resolver caracteres que el WebBrowser no puede usar
::cPdfFile := StrTran( ::cPdfFile, ".", "" ) // si es de la carpeta local le quito el . que trae
::cPdfFile := StrTran( ::cPdfFile, "", "//" ) // cambio las barras de carpetas a las que acepta el navegador
::cPdfFile := StrTran( ::cPdfFile, " ", "%20" ) // sustituyo los espacios
::oOcx1:Navigate( "file:///" + ::cPdfFile ) // a navegar por el fichero
RETURN Nil
Eso es todo, al navegar por el archivo PDF es el navegador de Internet convertido a un control activeX ::oOcx de nuestro form el que tendrá que resolver el uso del ActiveX apropiado para cargar el PDF, el único requisito es que este ActiveX de Acrobat Reader ha de estar instalado para que esto funcione, si no lo está pasaría lo mismo que si fuéramos a abrir un PDF de Internet desde el Internet Explorer, que no navegaría y simplemente nos pediría qué queremos hacer con el archivo.
Normalmente cualquier usuario tendrá instalado Adobe Acrobat Reader puesto que se puede considerar prácticamente obligatorio hoy en día, debido a la gran cantidad de documentos PDF que se manejan.
Segundo ejemplo: visualizar un archivo FLASH.
Hay poco que comentar en este ejemplo puesto que es idéntico al anterior, pero en este caso el archivo a abrir ha de ser un SWF y el navegador necesitará que este instalado Macromedia Flash Player, programa muy habitual para poder navegar por páginas Web con elementos en movimiento.
Tercer ejemplo: búsquedas en Google.
En los dos ejemplos anteriores hemos usado el WebBrowser para navegar localmente por archivos del disco.
Ahora vamos a navegar por Internet pero vamos a ir directamente a una página de Google y no solo a www.google.es sino que vamos a obligar a Google que efectue una búsqueda y nos la presente.
Para empezar aparece el Bevel con un contenido buscado que es “xailer xbase”, pero como se vé arriba hay un edit en el que podemos pedir desde nuestro programa que Google busque el texto que queramos.
El truco es muy simple basta con hacer una búsqueda cualquiera en Google desde Internet Explorer como las que hacemos todos los días, por ejemplo que busque la palabra pepe y nos fijamos en la URL de la parte superior
http://www.google.es/search?source=ig&hl=es&rlz=&q=pepe
&btnG=Buscar+con+Google&meta=
Fijémonos en que en la mitad de la URL esta el elemento buscado, con esto basta que sustituyamos ese elemento en la cadena por el valor del edit pasado a la variable cText y navegar a esa URL concreta:
::oOcx3:Navigate( "http://www.google.es/search?source=ig&hl=es&rlz=&q=" + cText + "&btnG=Buscar+con+Google&meta=")
Tan fácil como esto y ya tenemos Google dentro de nuestro programa, aunque no se si será algo muy útil.
Otro ejemplo sencillo sería navegar a un artículo de la Wikipedia con:
::oOcx3:Navigate( “http://es.wikipedia.org/wiki/” + cText )
Cuarto ejemplo: navegar por elementos multimedia, MP3, AVI, WMA, etc.
Aunque este ejemplo no me ha resultado totalmente satisfactorio me he decidido a publicarlo como está ya que me ha demorado 3 días la entrega de este artículo y creo que aunque funciona es mejorable pero lo dejo para otro momento.
El navegador también puede ejecutar elementos multimedia como sonido o vídeos.
En principio el sistema es idéntico al utilizado para los PDF o SWF.
Para ello utilizará el “Windows media player” del sistema operativo, pero no he conseguido integrarlo en la ventana de la aplicación.
Existe también un ActiveX propio del WMP pero he intentado utilizarlo y me he dado de cabeza contra la pared llamada Microsoft puesto que la información que hay sobre el asunto me ha parecido muy dificultosa y me ha hecho perder mucho tiempo.
Conclusión.
Como podéis ver los ejemplos básicamente son 2, ejecutar ficheros de varios tipos y navegar a una dirección de Google.
Son bien sencillos y todos ellos utilizan el ActiveX WebBrowser que está incluido en Windows.
No son gran cosa pero espero os sean de alguna utilidad. La próxima entrega será algo más elaborada ya que nos permitirá integrar Google Maps con nuestras aplicaciones.
Nota: Adjunto un pequeño PDF (gentileza de Xailer), un pequeño SWF, unos segundos de MP3 y un minivideo AVI, pero podéis abrir los que queráis de vuestro disco duro.
Salu2.