PDA

Ver la Versión Completa : GH Freebrary para Delphi XE2


Al González
28-04-2013, 04:29:17
Hola a todos.

Hoy es un día emotivo porque he terminado y puesto en la zona de descargas (http://terawiki.clubdelphi.com/Delphi/Componentes-Funciones/__GH_Freebrary__/) 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 (http://www.clubdelphi.com/foros/showthread.php?t=84417), 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 (http://www.clubdelphi.com/foros/forumdisplay.php?f=54) 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
Hola a todos.
Hoy es un día emotivo porque he terminado y puesto en la zona de descargas (http://terawiki.clubdelphi.com/Delphi/Componentes-Funciones/__GH_Freebrary__/) 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. :)

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 (http://www.clubdelphi.com/foros/showthread.php?t=82976) para que trabajemos en ello. ;)

Al González
30-06-2013, 23:17:20
Hola a todos.

Tengo novedades sobre las ediciones (http://terawiki.clubdelphi.com/Delphi/Componentes-Funciones/__GH_Freebrary__/) 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:
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:
TForm2.Execute ('Rueda');
TForm2.Execute ('Palanca');
El formulario puede "recoger" esos parámetros en alguno de sus eventos, como el evento OnCreate:
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:
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
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í (http://www.clubdelphi.com/foros/showthread.php?t=84523).

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 (http://www.clubdelphi.com/foros/showthread.php?t=82976) y XE4 (http://www.clubdelphi.com/foros/showthread.php?t=83620), 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 (http://www.clubdelphi.com/foros/showthread.php?t=84417) 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.