miércoles, noviembre 15, 2006

FreeWin puso a correr a todo el mundo.

(hay un add-on nuevo al final de este comentario)

Hace tiempo que no escribo algo sobre programación en el blog, pero ahora estoy pasando por una epoca donde el trabajo me sale por las orejas, con 2 desarrollos para Web delante, una migración a 32 bits con Xailer, una auditoria de centros de computo que realizar, un curso de ADO y acceso a datos SQL por las noches, una consultoria para migración de un sistema a 32 bits, 2 instalaciones de ADS pendientes y un viaje a Barcelona para el 30 de Noviembre, creanme que es complicado estirar las horas del día para llegar a tiempo a todos los compromisos.

Aun así dedico una hora al dia (y solo una hora) a revisar todos los mensajes, posts, webs, blogs y a contestar algunas de las preguntas que están en los foros todos los dias.

Dentro de mis visitas ha distintas webs hay un producto que he venido siguendo con mucho interés, se trata de FreeWin, un proyecto OpenSource cuyo objetivo es crear un librería gráfica para xHarbour totalmente OpenSource.

Desde su nacimiento FreeWin ha sido un producto polémico, sin embargo ha resultado que es un producto que esta siendo construido concienzudamente, sin prisa pero sin pausa, para lograr una GUI muy estable y bien construida "desde abajo"

Oscar Lira es quien está a cargo del proyecto, y esta semana ha puesto a correr a mas de uno, sucede que este chico, que ha de tener mucho tiempo libre, porque de otra forma no me explico como hace tantas cosas tan buenas y en tan poco tiempo, nos ha regalado con una implementación de ActiveX para (x)Harbour, distribución Borland C++ que corre prácticamente EN TODOS LOS PRODUCTOS DE TERCEROS Y LIBRERIAS GRAFICAS PARA XHARBOUR.

Los controles ActiveX son la gran puerta de entrada a un mundo fascinante, lleno de librerías y componentes visuales que nos permiten trabajar de una manera mas descansada, sin sufrir porque a nuestro lenguaje de programación le hace falta tal o cual control. Si tu programa necesita un navegador web que corra en un dialogo.... no hay problema, haz un ActiveX, si necesitas visualizar un PDF dentro de una ventana de tu aplicacion, usa un ActiveX, si quieres meter Excel como una de las opciones de tu menu en tu programa y que corra dentro de una ventana hija de tu ventana principal, no hay problema, usa un ActiveX.

El primero en ofrecer un soporte a ActiveX fue FiveWin, sin embargo su implementación no esta completa aún porque carece del soporte de eventos, xHarbour en su versión comercial (xHarbour.com) ofrece en la version de paga un soporte ActiveX mas completo y Xailer, tiene una implementación completa de ActiveX, pero que no ha liberado, aunque ya son usables desde Xailer de forma "manual", es decir, construyendo manualmente el objeto desde código, pero la intención del Xailer Team es que tu tengas en tu barra de herramientas del IDE el control ActiveX y que en tu ventana de propiedades puedas asignar las propiedades del ActiveX y que además el control se pinte de forma dinámica sobre el formulario, cosa que falta de implementar aun.

Pues el buen Oskar le ha metido "un poquito" de presión a todos los productos de terceros, porque además su implementación del uso de ActiveX para xHarbour es totalmente GRATUITA, cosa que al equipo de (x)Harbour no le es del todo grata, ya que como comenté, ellos ofrecen el soporte ActiveX pero en la versión de pago, a FiveWin le "movió el tapete" porque el gran atractivo de las nuevas versiones 2.8, 2.7 y 2.6 es el manejo de ActiveX, sin embargo el aporte de Oskar se puede utilizar con todas las versiones anteriores a las 2.6, y bueno al Xailer Team, le forzó a anticipar la liberación del soporte a ActiveX antes de que estuviera totalmente integrado al IDE.

Quizá de momento la implementación ActiveX de Oscar no es completa, le falta el soporte de eventos, pero ayer me ha enviado un demo donde ya muestra el control de algunos eventos, supongo que es cuestion de tiempo para que la implementación quede totalmente terminada.

Si quieres mas información sobre la implementación de ActiveX sobre las distintas plataformas, sigue este link:

Pagina del proyecto FreeWin
Google Maps para Xailer, por Xevi Comas, hechos con la version gratuita de la clase ActiveX
Google Maps para FiveWin, por Jose Luis Capel

ADD-ON: No han pasado ni 24 horas desde que publique este comentario, y me acaba de llegar la notica que de Oscar ha liberado ya el soporte de eventos en la clase TActiveX, puedes descargar el ejemplo haciendo click aqui.

El soporte a eventos es muy pero muy simple, siguiendo el ejemplo publicado:

WITH OBJECT ::oActiveX := TActiveX():New( ::oWnd, "Shell.Explorer.2" )
:Navigate( ::oEdit:GetText() )

//Event Map :-)
:BeginMap( 102, { |p1| ::OnStatusBar( p1 ) } )
:BeginMap( 108, { |p1,p2| ::OnProgressChange( p1, p2 ) } )
:BeginMap( 113, { |p1| ::OnTitleChange( p1 ) } )
:InitEvents()
//End Event Map

END


Solo hay que instanciar el objeto TActiveX, pasando como parametro el contenedor y el string OLE que lo crea, los eventos se "mapean" es decir, cada evento esta numerado, y se mapean contra un bloque de codigo que puede llamar a una o varias funciones o métodos dentro del mismo, el paso de parametros se hace como parámetros de bloques de código, realmente algo muy sencillo, pero elegante.

1 comentario:

Johan Donado dijo...

Eso es precisamente lo que ando buscando para mostrar mis informes de Crystall Reports en xHarbour, y asi no tener que hacer enredos para mostrar mis informes en vista preliminar y luego imprimir directo a la impresora como en DOS.

Pero ya no está disponible en la página del autor por una falla técnica que le borró toda la base de datos. Alguien sabe donde más puedo conseguir este producto ?