Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   [GH Freebrary] (https://www.clubdelphi.com/foros/forumdisplay.php?f=54)
-   -   GH Freebrary para Delphi XE2 (https://www.clubdelphi.com/foros/showthread.php?t=82958)

Al González 28-04-2013 04:29:17

GH Freebrary para Delphi XE2
 
Hola a todos.

Hoy es un día emotivo porque he terminado y puesto en la zona de descargas la primera liberación de GH Freebrary para Delphi XE2. Es una versión reducida, por ahora no contiene todas las clases ni todas las funciones del paquete para Delphi 7, pero sí trae el componente que más "atención" ha recibido desde su creación hace ya varios años: el TghDataSource.

Deriva del típico TDataSource que viene de fábrica, usado cotidianamente en la mayoría de las aplicaciones, sólo que añade dos útiles propiedades:
  • DataSetCloned — Para crear en tiempo de ejecución un "clon" del DataSet asignado. Uno o más formularios pueden trabajar y hacer lo que sea con sus respectivos DataSet clones, sin tocar el DataSet original. Nada de lo que haga un formulario con el DataSet interferirá con el buen funcionamiento de otros formularios que usen el mismo DataSet (porque cada formulario usa en realidad una copia).
  • DataSetEvents — Para trabajar con los eventos del DataSet asignado, pero en el "ámbito" del componente. El DataSet puesto en un módulo de datos, mientras que dentro de un formulario y unidad aparte un componente TghDataSource le establece manejadores de eventos BeforeXXX y AfterXXX que son ejecutados sólo con ese formulario (eventos del DataSet particulares por formulario).
Recuerden que esto es software libre. Dentro de poco añadiré la descripción detallada del componente a la documentación, pero todo el mundo puede contribuir con un poco de tiempo para probar o poner en uso el componente u otros elementos de la biblioteca, compartir sus experiencias y enriquecer la divulgación.

A partir de aquí empieza el camino para que la gente disponga de GHF en versiones recientes de Delphi. Poco a poco iré ampliando el paquete de XE2 y espero pronto contemos con liberaciones para 2010, XE, XE3, XE4 y demás versiones (para ello necesitaré apoyo de todo tipo).

Por lo pronto dejo abierto este hilo dedicado a los avances, preguntas y respuestas sobre GH Freebrary en Delphi XE2, y les recuerdo que el resto del foro está ahí para cuando deseen iniciar un tema en particular con alguna inquietud, propuesta, consulta, etcétera. Como autor inicial intentaré responder tan pronto como sea posible, pero invito a que seamos más los que tengamos a bien allanarles el camino a los que vienen detrás.

Feliz fin de semana.

Al González.

Casimiro Notevi 28-04-2013 10:54:44

Cita:

Empezado por Al González (Mensaje 459475)
Hola a todos.
Hoy es un día emotivo porque he terminado y puesto en la zona de descargas la primera liberación de GH Freebrary para Delphi XE2.
Feliz fin de semana.
Al González.

Enhorabuena :)

^\||/

ElKurgan 28-04-2013 11:12:47

Muchas gracias por el aporte, Maestro

^\||/

ginkaku 28-04-2013 19:32:16

Se oye excelente, espero que salga para la version 2010.

ecfisa 28-04-2013 23:38:39

Muchas gracias Al. ^\||/

Saludos. :)

Al González 29-04-2013 22:20:43

Un placer, amigos. :)

Cita:

Empezado por ginkaku (Mensaje 459487)
Se oye excelente, espero que salga para la version 2010.

Hola ginkaku. Considerando que no serás el único usuario de Delphi 2010 interesado en el tema, he abierto un nuevo hilo para que trabajemos en ello. ;)

Al González 30-06-2013 23:17:20

Versión 20130630 liberada
 
Hola a todos.

Tengo novedades sobre las ediciones para Delphi 7 y XE2, acabo de subir la versión 20130630 (30 de junio de 2013). Esta vez tardé poco más de dos meses, pero ha valido la pena. Comprenderán que por más que quisiera dedicar el 100% de mi tiempo a este desarrollo, el hecho de que no me reporte ingresos (no han habido donaciones hasta el momento) hace que me distraiga en actividades laborales "normales". Ya saben, hay que ganarse las habichuelas, como dicen por ahí.

El porcentaje de la edición para XE2, respecto a la edición para Delphi 7, pasa del 20 al 28. Sigue siendo una proporción baja, pero ese 28% contiene bastante de lo que hace buena a GH Freebrary. Retiré de todas las unidades la leyenda "beta version", ya estaba de más calificarla de esa manera.

Una de las principales novedades para XE2 es que se incorpora la clase TghForm que usé durante bastante tiempo y con gran satisfacción en Delphi 7. No fue necesario hacerle grandes cambios, trabaja a la perfección.

Por otra parte, se agregaron las propiedades TghClientDataSet.FilterCheck y TghForm.Reader. Y en ambas ediciones se hicieron varias correcciones menores, y se incluyeron una veintena de funciones nuevas (como todas, pensadas para escribir menos código y evitarle complejidades al programador).

Para dar una muestra, me gustaría explicar brevemente que cuando derivamos nuestros formularios de TghForm en lugar de TForm, seguimos contando con todo lo que trae de herencia TForm, pero podemos lanzar los formularios sin tener que crear y destruir nosotros mismos las instancias de éstos. Con una sola línea se crea, se ejecuta (abre) y, cuando el usuario lo cierra, se destruye el formulario:
Código Delphi [-]
TForm2.Execute;
No necesitamos preocuparnos de instanciar la variable del formulario, ni de liberarla después de usar éste. Execute es como ShowModal, pero haciendo el trabajo completo. Y, como ShowModal, devuelve un estado mrOK, mrCancel, ..., según la manera en que haya sido cerrado el formulario. Además puede recibir parámetros abiertos, por si queremos indicarle algo a nuestro formulario:
Código Delphi [-]
TForm2.Execute ('Rueda');
TForm2.Execute ('Palanca');
El formulario puede "recoger" esos parámetros en alguno de sus eventos, como el evento OnCreate:
Código Delphi [-]
procedure TForm2.FormCreate(Sender: TObject);
begin
  // Agregamos al título del formulario "Rueda" / "Palanca" (lo que se haya puesto en Execute)
  Caption := Caption + ' - ' + OpenParams [0];
end;
Y si queremos algo similar a Execute, pero que en lugar de hacer ShowModal abra el formulario como lo hace Show, entonces tenemos para ello el método Open:
Código Delphi [-]
TForm2.Open ('Rueda');
En fin, es sólo una pequeñita muestra (una más) de lo que se pretende, y felizmente se consigue, con GH Freebrary. :)

Ojalá sepa de más programadores que la incorporen a su caja de herramientas. No hay como comprobar que lo que uno hace de verdad tiene valor.

Saludos.

Al González.

P.D. Tomaré esta versión de XE2 para comenzar la adaptación a XE4, la cual creo no tendrá mayores dificultades.

Al González 12-01-2014 08:49:35

Versión 2014.01.11
 
Buena noche/día.

Acabo de subir al repositorio la versión 2014.01.11 (11 de enero de 2014), con ediciones compiladas y probadas en Delphi 7 y XE2.

La edición para XE2 ya alcanza el 55% del contenido presente en la edición para Delphi 7. Y su núcleo (GHFRTL.pas) contiene ahora un 94% del que viene para Delphi 7. Respecto a la liberación anterior para XE2 —octubre de 2013—, se agregaron siete unidades: GHFEN, GHFES, GHFOpenXMLPart, GHFOpenXMLRels, GHFOpenXMLSpreadsheet, GHFOpenXMLSpreadsheetStrs, GHFXMLDoc.pas. Esta última tras hacerle la mejora que se plantea aquí.

En ambas ediciones mejoré el código de algunas rutinas, como ghValid, ghPropObj, ghCopyProp, ghCopyProps, ghRightChrs y ghPropValue. Agregué varias decenas de constantes, unas cuantas variables y tipos, y creé las funciones de uso general ghLeftChrs, ghLeftDigits, ghLeftInt, ghPropMethod, ghCopyPropObj, ghCopyPropMethod, ghCopyPropValue, ghSetUpperOrd, ghSimplifyUpper, ghPreCompare, ghSetInt64, ghValidGUIDs, ghCreateCOMObj, ghCOMObj, ghCOMDispatch, ghSetGUID, ghPosGUID, ghPosGUIDStr, ghPosGUIDStrD1, ghMSXMLSchemaCache, ghMSXMLSchemaCacheClassID, ghMSXMLVersion, ghEqualsFromD2, ghRightDigitsDots, ghRightVersion, ghCheckMSXMLDocClassIDs, ghProgID, ghProgIDVersion, ghGetProgID, ghClassID, ghPWideChr, ghWidePtr y ghGetClassID, entre varias otras. Además de una serie de ajustes de diversa índole.

Cada vez estoy más cerca de incluir el componente TghClientDataSet en la edición para XE2. Espero que sus 3500 líneas de código, con pequeñas mejoras sobre TClientDataSet, tengan aceptación entre los que usan versiones modernas de Delphi.

También decir que durante este tiempo el proyecto GH Freebrary recibió su primera donación monetaria: 100 MXN de un colega y buen amigo de Texcoco, México. Ojalá fueran más los que aportaran siquiera 1 peso, pero, mientras no sea así, sólo queda subvenirlo con ingresos por trabajos eventuales y conformarme con la satisfacción de estar haciendo algo emocionante por la comunidad Delphi. Los tiempos de soñar con oportunidades de buena salud y vida resuelta van quedando atrás. ¡Y hay tanto por hacer! Ojalá pudiera darme el "lujo" de trabajar 100% en este proyecto; quizá ese es el único sueño que sigue fuerte en mi interior.

Pero dejémonos de melancolías. Una pregunta: ¿alguien ha adaptado o intentado adaptar ya alguna de las ediciones a versiones distintas de la 7, 2007 y XE2? Quiero hacer eso, pero todavía no logro reunir lo que vale la edición Enterprise o siquiera Professional de Delphi, y me ha costado trabajo convencer a los colegas de que me dejen usar sus Delphis mediante escritorio remoto, aunque sea para compilar y probar. Recuerden que en el foro hay hilos abiertos para el proceso de adaptar GHF a Delphi 2010 y XE4, y cualquiera es libre de iniciar un tema sobre la adaptación a otras versiones o sobre lo que desee preguntar o compartir acerca de GHF. Pueden tomar la biblioteca, adaptarla a alguna versión o añadirle alguna mejora y subirla al repositorio para el disfrute de los demás, después de todo eso es lo que distingue al software libre.

Con esta liberación, hay un par de temas del manual que debo actualizar. Vamos a darle un rato más antes de ir a la cama...

Saludos y que este sea un gran año para todos nosotros. :)

Al González.


La franja horaria es GMT +2. Ahora son las 20:22:28.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi