Mi método doble valor y expresiones con LiveBindigns

enero 20, 2012 en Artículos, Delphi, Entrada Diario, LiveBindings, Noticias, Noticias Delphi, Ofertas, XE2

Durante los próximos meses, vamos a ser muchos los compañeros que tomemos contacto con áreas nuevas de nuestro entorno de desarrollo, en esa fase de acercamiento a RadStudio XE2, como pueda ser LiveBindigns, los estilos, las capacidades gráficas 2D/3D. Y es que tenemos por delante, la difícil tarea de asimilar todas estas novedades y comprender de que forma se pueden acoplar a nuestra programación diaria, o del día a día.  Y por lo menos a mí, no me queda duda de que va a ser un proceso largo y evidentemente no trivial. Esa realidad, difícilmente se puede negar o esconder. De hecho, vamos a afrontarla a medida que requiramos funcionalidades más avanzadas y confrontemos la plataforma con las necesidades reales de los proyectos. Es entonces cuando mas echaremos en falta una buena documentación y nos veremos en la necesidad de salir a la red en búsqueda de respuestas. A diferencia de etapas anteriores,  contamos con la dificultad añadida que es la ausencia de documentación o en su defecto, la deficiente calidad de la misma. Y su juventud, que hace dificilmente comparable nuestra VCL con FireMonkey, y que se manifiesta en que todavía no exista ese banco de respuestas que nos permite contrastar si la dificultad ya ha sido enfrentada por otros compañeros.  Esa es la parte mas negativa y creo que ser realista es distinto de ser agorero, actitud en la que muchos van a caer, en ese discurso fácil y destructivo.

Resaltemos también las cosas buenas: En lo positivo, está el hecho reconocido y valorado por muchos compañeros, entre ellos yo, de que Embarcadero conoce esto, es consciente de ello, -el primer paso para solucionarlo- y está haciendo un verdadero esfuerzo por dotar a la nueva plataforma de actualizaciones, que corrijan los errores que van siendo detectados y por supuesto, de nuevos ejemplos que puedan ayudar mitigando o aliviando la falta de documentación.

Estos días anteriores hemos conocido la disponibilidad de la cuarta actualización de RadStudio XE2. ¡La cuarta…! Es una prueba evidente de esa voluntad de hacer las cosas bien, que argumentaba en lineas anteriores. Nosotros siempre preferimos ver el vaso medio lleno antes que medio vacío, por lo que, fuera de la incomoda tarea de las instalaciones y la pereza de hacerlas, prevalece la necesidad de que sean corregidos y mejorados cuantos detalles mejor.

Release Notes for XE2 Update 4

Así que leed con atención las indicaciones de instalación, que son similares a las que pudimos tener en updates anteriores.

Comentaba, siguiendo un poco lo que decía, que van siendo cada vez mas frecuentes las preguntas acerca de estas novedades, pudiendo contar con alguna que otra en el foro de Delphi Solidario.

Hoy por ejemplo, se ha dejado una pregunta en el aire sobre LiveBindings y el componente TListBox, en donde se compartía un problema al llenar la lista interna TStrings que mantiene el componente, para mostrar los distintos items de selección. La persona que hacía la pregunta mostraba que tan solo había conseguido recuperar 200 registros de una tabla que almacenaba una cantidad mayor. Y realmente creo que su problema era no saber si estaba haciendo algo no correcto o era una limitación, cosa improbable aunque difícil de adivinar si no cuentas con una buena documentación o accedes a las fuentes y ves que está sucediendo realmente. Así que tenemos también nosotros, todos los que participamos en la Comunidad, la tarea de aportar toda nuestra ayuda y os invito a volcarnos en nuestros foros y participar de ellos. No me cabe la menor duda que en unos días se resolverá ese problema, ese y los sucesivos, que van a ir apareciendo desde distintos puntos de nuestra Comunidad.

Posiblemente en unos meses también contemos ya con la publicación de los libros que están ahora escribiéndose, el de Marco Cantú (en inglés) o el de Francisco Charte (en español). O se haya añadido mas detalle a la documentación actual, fruto de un nuevo Update. Tengo confianza de que sea como sea, vamos a seguir adelante, mas si prevalece el espíritu que ha marcado siempre a nuestra Comunidad hispana.

Yo, por mi parte, -ya me conocéis- también intento poner mi granito de arena, con independencia de que no siempre podamos resolver los problemas. Siempre acaba uno aprendiendo algo en ese proceso de ayuda y eso es lo verdaderamente importante.

Hace algo mas de una semana compartía con un compañero de ecuador varios correos y me pedía algún enlace al tema de livebindings y el componente TDBLookupCombo. Ya sabéis que la nueva plataforma FireMonkey nos ha dotado de un nuevo sistema de enlace a datos, livebindings, alternativo en la VCL al tradicional uso del [control-datasource-dataset], que ya conocemos. Y mientras todavía nos es factible el uso de ambos sistemas desde la VCL, en los desarrollos ligados a firemonkey solo tenemos disponibles los controles que accedan a datos a través de la nueva tecnología. Quiere decir que ya no existen ni el TDBEdit, ni el TDBLookCombo, etc. y nos valemos de cualquier componente que pueda ser compatible o que acepte el enlace a datos. Y quien dice cualquier, dice eso precisamente…  :-)

 Creo que no somos conscientes de la increíble mejora a medio/largo plazo que eso puede suponer. Es un tema de mayor calado que nos puede ayudar en la búsqueda de mejores perspectiva de la Orientación a Objetos.

De mis pesquisas sobre el tema que se me planteaba, pude contrastar algunos detalles que posiblemente podamos compartir mas adelante con algún ejemplo. El hecho es de que el componente TComboBox no se adapta correctamente a lo que podemos demandar de un TDBLookupCombo. No porque no sea capaz de desplegar una lista que lo es, sino porque precisamente le falta lo que le hace distinto: tener una fuente de datos que provea la clave primaria o key value asociada y no el item selector. Esa es la clave del asunto y que dificultaba resolver el problema. El usuario visualiza un item de una lista de alternativas y de ese proceso de selección, lo que guardamos es una clave, cumpliendo las normas habituales de normalización de tablas, de las cuales huelga comentarios.

Os muestro una imagen que compartía con él, en ese intercambio de correo:

Pruebas sobre campos lookup

Había preparado un formulario en el que existían 3 tablas muy básicas. Una con una lista de personas, otra con una lista de grupos y una tercera que se alimentaba de las dos y que las relacionaba, formando equipos de personas asignados a grupos.  Pero bueno… al final, que uno consiga poner un parche y simular el comportamiento del componente no es suficiente ni siempre es correcto. Y realmente, acababa las lineas de mi correo, comentándole que no me gustaba la solución y no la consideraba válida, quedando a la espera de encontrar alguna idea en la red o documentación.

Asumiendo el peligro de equivocarme, creo que ninguno de los enlaces o expresiones existentes, tal y como está ahora mismo, se adaptan al componente TComboBox de forma que se simule el comportamiento de un TDBLookupCombo, por cuanto aunque somos capaces de rellenar la lista de items, cosa que puede hacer el enlace TBindList, al que nos basta indicarle en la propiedad Text del TComboBox, y Value del campo vinculado al origen de datos, produciendo de forma automática que sea relleno cada item de la lista con los valores de la tabla, tropezaremos con el problema que los enlaces o expresiones van a intentar hacer una correspondencia directa entre el item selector y el campo destino. Si optamos en ese camino se mostraran advertencias del tipo: Vd. intenta guardar un string y esperaba un valor entero… ¡Mal camino!.

Otra alternativa, es la de optar por un TBinPosition, para conseguir sincronizar el itemindex del combo con valor actual de la clave guardada en la tabla. Aquí tambien nos encontraremos con un problema. En los ejemplos que usa Embarcadero, que se encuentran  en el directorio Samples/Livebindings (podéis hacer una búsqueda con el término del nombre del proyecto que agrupa los ejemplos: BindSamplesGroup.groupproj) hay uno que se pone en varios foros como muestra de trabajo con TListBox, similar al TComboBox en cuanto a la gestión de cadenas, y siempre se utiliza el enlace TBinPosition para resituar y sincronizar el recno de la tabla con el itemindex… El detalle está en este caso, es que el Recno no se utiliza y no es aplicable a lo que buscamos, porque lo que tiene sentido es el valor de la clave (FieldByName(‘IDGrupo’).AsInteger y no el valor de la propiedad RecNo del registro).  :-)   Y el itemindex muestra la posición del item seleccionado pero no existe una correspondencia con lo que nosotros hubieramos identificado con el keyvalue de cada item.

Así que ese camino esta también lleno de problemas y nos obliga a añadir al componente ComboBox varios enlaces a datos, uno para llenar la lista, otro para sincronizar desde el control a la fuente de datos y un tercero para enfocar el sentido contrario, desde la fuente de datos al componente. Todo demasiado complicado, en relación a lo sencillo que es el enlace que hubieramos planteado desde la plataforma VCL.  :-(

Pero decía también al principio de la entrada que el hecho ayudar a alguien implica también el constante aprendizaje que uno recibe y que nos hace descubrir cosas o aspectos que en principio no esperabamos. Y digo esto porque el problema realmente no ha estado en la tecnología sino en el aprendizaje de su uso.

El motor de expresiones que se ha incorporado para sostener el corazón de LiveBindings es algo que aun está por descubrir por la Comunidad y que poco a poco va a ir siendo conocido a medida que vayamos teniendo buena documentación y aprendamos como valernos de él, en lugar de luchar contra él.

Alguien pensaría que los métodos que en tiempo de diseño nos muestra el entorno y que podemos utilizar para generar las expresiones va a ser algo inmutable y nada mas lejos de la realidad. Vamos a ver un ejemplo muy sencillo adaptado sobre los que acompañan a la unidad System.Bindings.Methods y que va a permitir que sea calculado el valor doble del introducido en un casilla cualquiera.

 

Mi método Doble Valor

unit UMyMethod;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, System.Bindings.Methods,
  System.Rtti, System.TypInfo, System.Generics.Collections, System.Bindings.Evaluator,
  System.Bindings.ObjEval, System.Bindings.EvalProtocol, System.Bindings.Consts,
  FMX.Edit, Data.Bind.EngExt, Fmx.Bind.DBEngExt, System.Bindings.Outputs,
  Data.Bind.Components, Fmx.Bind.Editors;

resourcestring
  sInvalidValueError = 'Valor no aplicable a la operación';

type
  TfrmDobleValor = class(TForm)
    edValor: TEdit;
    edDobleValor: TEdit;
    lbDobleValor: TLabel;
    lbValor: TLabel;
    BindingsList1: TBindingsList;
    BindExpressionedDobleValor1: TBindExpression;
    Label1: TLabel;
    procedure edValorChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmDobleValor: TfrmDobleValor;

implementation

{$R *.fmx}

function MakeMethodDoubleValue: IInvokable;
var
  str: String;
begin
  Result := MakeInvokable(function(Args: TArray): IValue
  var
    v1: IValue;
    LExt: Extended;
  begin
    if Length(Args) <> 1 then
      raise EEvaluatorError.Create(sFormatArgError);
    v1 := Args[0];
    str:= Trim(v1.GetValue.AsString);
    //manejamos el caso de valor vacio
    if v1.GetValue.IsEmpty then
      Exit(TValueWrapper.Create(nil))
    else
    begin
       if TryStrToFloat(str, LExt) then
         Exit(TValueWrapper.Create(LExt * 2))
       else raise EEvaluatorError.Create(sInvalidValueError);
    end;
  end);
end;

const
  sIDDoubleValue = 'DoubleValue';

 
procedure RegisterMyMethod;
begin
  TBindingMethodsFactory.RegisterMethod(
    TMethodDescription.Create(
      MakeMethodDoubleValue,        //AInvokable:IInvokable
      sIDDoubleValue,               //AID
      sIDDoubleValue,               //AName
      '',                           //AUnitName
      True,                         //ADefaultEnabled
      '',                           //ADescription
      nil));                        //AFrameworkClass
end;

procedure UnRegisterMyMethod;
begin
   TBindingMethodsFactory.UnRegisterMethod(sIDDoubleValue);
end;

procedure TfrmDobleValor.edValorChange(Sender: TObject);
begin
 BindingsList1.Notify(edValor, 'Text');
end;

initialization
  RegisterMyMethod;

finalization
  UnRegisterMyMethod;

end.

Descargar fuentes

La moraleja de la historia creo que se adivina: Cuando caía hace un par de días sobre dicha unidad (System.Bindings.Methods), fruto de querer resolver el problema, y podía ver como se habían generado las expresiones del editor, y realmente apreciaba la “facilidad” que existía en crearlas y usarlas, y la potencia que podía aportar, sin tener que depender de la que mostraba el editor, sino crearme las propias expresiones, me hacía también suponer que se abrían alternativas, pudiendo generar adicional mente vías para entiquecer el flujo de datos entre el componente y la fuente, que era precisamente lo que ahora pienso que me impedía resolver el problema. Posiblemente, la expresión que recorre la tabla para llenar la lista pueda adicionalmente rellenar los valores de las claves o keyvalues, por lo que no necesite mas de dos enlaces entre ellos: el que alimenta la lista de cadenas y el que hace corresponder una clave con un valor en la tabla, mostrando el texto selector.

Nada mas por hoy. Un abrazo a todos y estamos de vuelta para pelear por la Comunidad. Si hay algo que nadie puede prohibirme es seguir aprendiendo y disfrutando de ello.

Enlaces sobre el tema imprescindibles:

http://www.jcolibri.com/articles/firemonkey/livebindings_delphi_xe2/livebindings_delphi_xe2.html

http://www.danieleteti.it/2011/08/30/in-the-core-of-livebindings-expressions-of-rad-studio-xe2/

http://neftali.clubdelphi.com/?p=1783

Testeando XE2 (FastReport)

noviembre 14, 2011 en Delphi, Entrada Diario, fastreport, XE2

Estas semanas anteriores, compartimos algunos mensajes en el muro de DelphiSolidario que hacían referencia a FastReport. Se cruzaron bastantes comentarios, muy interesantes, en la linea de valorar esta suite de componentes de impresión frente a otras disponibles para nuestro entorno también como: QReport, RaveReports o ReportBuilder y, tras la lectura de la discusión, me pareció un tema interesante para esta entrada del blog, donde pudieramos conocer algunos detalles de la versión que se ha incluido en el IDE.

Quizás la peor parada de aquella discusión fuera RaveReports. Yo he estado un tiempo utilizándola pero sinceramente, si las sucesivas versiones de RadStudio siguen incluyendo FastReport me quedaría sin duda con esta última. RaveReports me pareció un poco rebuscada y oscura, frente al uso del resto citado. Si bien, QReport tradicionalmente es quizás la mas conocida, pues nos acompañó durante muchos años, entre ReportBuilder y FastReport  la balanza está mas equilibrado y puestos a invertir las dos pueden ser una buena inversión. Pero claro, si el ide nos trae una versión estandar en mi opinión cobra ventaja Fast Report.

Tomad estos comentarios simplemente como una opinión personal ya que fueron diversas y razonables todas las opiniones que se compartieron en el muro de facebook.

Para empezar os contaré que lo primero que hice fue abrir el entorno de RadStudio XE2 para comprobar si efectivamente incorporaba FastReport en la paleta de componentes. Y mi sorpresa fue darme cuenta de que no aparecía por ningún lado…, lo cual me hacia suponer que estaria disponible para la descarga y así fue.

Lógicamente, su descarga esta condicionada a los usuarios registrados de RadStudio XE2, que pueden acceder al enlace:

 ID: 28514, FastReport VCL 4 RAD Edition for Delphi and C++Builder XE2

Editor

Tras la descarga del ejecutable, la instalación  no merece ninguna reseña especial, y hecha ésta, podremos acceder a los componentes instalados en nuestra paleta de componentes, ya listos para su uso. La instalación automatizada, hace los detalles que a veces quedan olvidados como añadir las rutas de las fuentes en el directorio de instalación. También ha creado unas entradas en el menú inicio donde podemos acceder a un pdf con la documentación de uso “FastReport User Manual”, básica para comprender e iniciarse en el diseño de los informes. Asimismo, y me parece una muy buena idea, tenemos a la mano una demo compilada de los distintos tipos de informes.

Esta es una imagen del ejecutable que contiene la demo.

FastReport Demo

Y finalmente, también podemos acceder al compilador de recursos que nos va a permitir que los informes se nos muestren en el idioma deseado. Esta opción es otro de los detalles que me gustan de FastReport, que nos permite fácilmente y sin problemas recompilar los recursos y cargar los adecuados al idioma que va a mostrar el informe.

Compilador de recursos

Ehhhhhhhhh…. ya os disteis cuenta. La opción de RadStudio XE2 no aparece por ningún lado, por lo que el siguiente paso fue averiguar -cual astuto detective – qué tenía que hacer en ese caso.  :-(    Ciertamente, este detalle da una idea de que la adición de los componentes a nuestro IDE se hizo con cierta premura si atendemos a los dos detalles comentados: que no se incluya en la release del producto y que existan detalles como éste que no ha dado tiempo a resolver (aunque os diría aun así creo que vale la pena que se haya incluido porque es un producto muy bueno y de gran calidad).

En fin… vamos a husmear un poco:

http://www.fast-report.com/en/forum/index.php?showtopic=8406

Si atendéis a los comentarios no parece que tengan claro cuando van a facilitar el nuevo exe y de momento las respuestas van en la linea de hacer este proceso de forma manual.

No os preocupéis para los que no tengáis demasiada experiencia en el tema. Es muy sencillo y mi consejo es que primeramente accedáis a la carpeta [Res] donde FastReport guarda los recursos para los distintos  idiomas.

C:\Program Files\FastReports\FastReport 4 Embarcadero edition\Res

Los pasos son sencillos (los teneis en el archivo install_res.txt)

1. Remove the following files from the FastReport 4\Lib folder:
- frxrcClass.dcu
- frxrcDesgn.dcu
- frxrcInsp.dcu
- frxrcExports.dcu

2. Go folder with desired language and run mk.bat file. This will make
.pas files from .frc files and copy them to all necessary FR folders.

3. Recompile the FastReport packages (see install.txt file,
  section III or IV). Only frx*.dpk, frxe*.dpk packages need to
  be recompiled ('*' = your Delphi version).

Eliminar los cuatro archivos indicados en el paso 1. Acceder a la carpeta concreta del idioma que deseamos recompilar y el archivo de lotes mk.bat en el paso 2 y finalmente, recompilar los paquetes que indica en el paso 3.

No obstante, yo en el pequeño ejemplo que vamos a compartir he optado por una solución intermedia, de forma que voy a cargar los recursos dinámicamente, tal y como se indica en el interior del archivo de lotes mkall.bat

Para ello, basta incluir la llamada a la función

uses frxRes;
frxResources.LoadFromFile('english.xml');

Sustituir ‘english.xml‘ por el nombre del archivo de recursos que vais a cargar. Y ¡voila!. Trabajo hecho. Ah. Olvidaba decir que previamente debéis de ejecutar mkall.bat para que se genere un xml que contiene todos los recursos (con extensión frc) y que es precisamente el que vais a usar para cargar el idioma español.

En esta imagen, podéis ver el contenido de la carpeta Spanish

directorio de recursos

 Con estos comentarios vais a poder iniciar los primeros pasos sin problemas. Pero bueno… ya que estamos metidos en harina me preguntaba si os apetece curiosear un poco mas y escribimos unas lineas de código.

Bien. Vamos a investigar un poco y el próximo día lo compartimos…

Que tengáis una buena semana.

Delphi Básico, Delphi Solidario y Comunidad Hispana

octubre 13, 2011 en Comunidad, Delphi

Hola compañeros,

como sabéis, hace un tiempo y con motivo del cambio de nombre del blog, incrementé las actividades en las redes sociales y mas concretamente en Facebook, creando un grupo de facebook que respondía al mismo nombre “Delphi Solidario“, desde el que se inició una etapa de difusión de contenido para nuestra Comunidad.

Respecto al cambio del nombre del blog, y de por qué pasó de ser Delphi Básico a llamarse Delphi Solidario podéis leer en la entrada Cerrando temas… , donde intentaba justificarlo y compartirlo con vosotros. Este punto lo podéis leer al final de la misma.

Lo realmente importante es que el grupo de facebook ha ido creciendo, superando las primeras expectativas y se han sumado compañeros sin los que hubiera sido imposible proyectarse hacia el exterior ni pensar en que el grupo puede llegar a más. No es un tema de que se incremente el numero de participantes -que se ha incrementado de forma considerable- sino que además, el grupo de facebook, está acogiendo a los compañeros que han colaborado activamente en la difusión de contenidos de habla hispana, intentando abrir los brazos simbólicamente hacia todos, sin excluir a nadie en este intento de crear un lugar común para nuestra Comunidad. La idea no es que dejen de existir los blogs o los foros, sino todo lo contrario, en dotar a la Comunidad de un punto de encuentro que los refuerce, manteniendo su propia idiosincracia y carácter; un lugar en el que puedan difundirse todos ellos y cualquier usuario (nuevo o no tan nuevo) que busque información sobre cualquier tema de nuestra herramienta de desarrollo, encuentre una respuesta real y efectiva. No buscamos dividir ni ser protagonistas, que entiendo es una idea que puede quedar en el aire y que de alguna forma hay que despejar, sino participar y proponer la creación de un marco que sea representativo de todos los bloggers, comunidades y grupos de Delphi. Y se está luchando también para que en dicho marco, se pueda contar con Embarcadero y que no sea ajeno a nuestra Comunidad.

Se que todo esto es un tanto complicado y que el grupo de facebook es el primer paso, un poco provisional, de una visión de Comunidad mas ambiciosa y solidaria. Pero os aseguro que estamos en ello.  :-)

Por ello, finalmente y tras meditarlo varios días, y antes de seguir con las acciones de difusión del grupo, he pensado que era necesario desligar mi blog del grupo de facebook, de forma que no se pudiera entender que encuentro un aprovechamiento del esfuerzo ajeno y que a mi me beneficia en algo. Y para que no exista la mínima duda de que esto no es así (y aunque se que los que me conocen lo saben hasta el punto de ser innecesario cambiar nada) he pensado que me cuesta poco que el blog vuelva a ser Delphi Básico, de forma que no exista una relación directa entre el nombre de uno y otro, y podamos seguir ese esfuerzo iniciado en pro de la Comunidad, que a fin de cuenta somos nosotros mismos.

Es por eso que el blog volverá a llamarse Delphi Básico y el grupo Delphi Solidario seguirá con el mismo nombre.

Curiosamente, esta especie de proyecto que estaba en nuestra mente, iba a llevar nombres mas tradicionales, como Comunidad Hispana de Delphi, o Delphi Hispano, o similares. Y de repente, por los comentarios recibidos en facebook, uno se da cuenta de que el grupo encuentra que el nombre les gusta, que el calificativo “solidario” dice mas que el conservador termino de Hispano. Porque valoramos positivamente el compromiso y entendemos que ese espíritu está mas relacionado con lo que tradicionalmente ha defendido nuestra Comunidad.

Así que esa es un poco la idea, para que entendáis el motivo del cambio y de que el blog se vuelva a llamar Delphi Básico.

 

Aviso sobre el grupo de Facebook “Delphi Solidario”

septiembre 6, 2011 en Advertencia, Delphi, Entrada Diario, Facebook, Noticias, Recordatorio

Hola a todos:

Comentaros que finalmente tomé la decisión de volver a crear el grupo de Facebook, “Delphi Solidario” de acuerdo a la nueva estructura de grupos de esta red social  , (decisión que había demorado durante meses), y para ello, se ha hecho necesario dar de baja todas los miembros que formaban parte del antiguo grupo. Si observáis que ha desaparecido vuestra membresía ya conoceis la razón. ¡No vayáis a pensar que es por otro motivo!

Para poder eliminar un grupo antiguo hay que eliminar todos los miembros, momento en el que Facebook lo elimina del directorio de grupos. Podría haber simultaneado durante un tiempo ambos grupos e ir traspasando gradualmente a los miembros pero creo que no valía la pena, ya que no eramos tantos (aproximadamente unos 50 compañeros).

A los miembros que he podido dar de alta directamente, porque ya formaban parte del circulo de amigos, los he incluido (espero no haber olvidado a ninguno). Os pido, al resto, que os vayáis uniendo al grupo.

Esta es la dirección del grupo de facebook “Delphi Solidario”:




http://www.facebook.com/groups/delphisolidario/

(recordad que también existe el enlace en la barra lateral del blog)

Respecto al motivo del cambio al nuevo sistema de grupos, es básicamente por el sistema de publicación, que tiene mejoras respecto al antiguo sistema de grupos. Al final, eras mas las ventajas que los inconvenientes y creo que valía la pena.

Sed libres de participar en el grupo, añadiendo los enlaces y publicaciones que creáis conveniente resaltar. Es un grupo abierto y libre (con el respeto a unas mínimas normas de convivencia que todo el mundo ya conoce)

Un saludo y gracias por participar,

Salvador

 

 

 

 

¡Felicidades Septiembre!

septiembre 1, 2011 en 64bits, Ado Express & DataSnap, Delphi, Delphi Prism, Enlace interesante, Entrada Diario, Eventos, FireMonkey, Nos deja la semana..., Noticias, Noticias Delphi, XE2

¿Qué tal estais?  :-)

Espero y deseo que bien.

Hoy retomamos oficialmente, tras estas semanas de descanso,  la actividad de la página, eso sí, :-)  ya con las pilas cargadas y llenos de energia. Y digo oficialmente, porque durante los días anteriores sí que había estado publicando comentarios y remarcando algunos enlaces interesantes en Facebook y Twitter (a partir de ahora también en Google Plus). Muchos de vosotros los habréis leído. La agilidad de las redes sociales, la inmediatez de cuanto se expone, hace un marco inmejorable no ya para transmitir las novedades o redescubrir la información, sino para capturar el pulso de la realidad.

¡Cualquiera diría que no iba a llegar el mes de Septiembre!

Me felicitaba a mi mismo por estar disfrutándolo,  por haber sobrevivido -como mero ciudadano de a pié-, a los vaivenes y a las continuas convulsiones económicas que vivimos y que nos afectan a todos los niveles. ¡Sujetense! -grita alguién a lo lejos- ¡qué esto se cae!… Desgraciadamente, nos despertamos día a día con noticias desalentadoras de la crisis económica y cada vez, el margen para la esperanza es mas pequeño: Dia a día nos hacemos conscientes de la destrucción del tejido empresarial y de la quiebra del sistema financiero, del paro, de la crispación social por los recortes que tiene que acometer el sistema, etc.   Es mas, aun siendo este blog un punto de encuentro de compañeros de una comunidad de programadores, resulta dificil abstraerse del problema económico y social latente y hacer como si no existiera, sin que asome de tapadillo entre las lineas del texto que compartimos. Es por ello, el título que abre este post, que se escribe y se comparte en el contexto del lanzamiento de un producto (Rad Studio XE2) que viene al mundo, -en mi opinión-, en el peor de los escenarios deseables: a un mundo bastante decadente, sumido en una crisis produnda, económica, social y ética.

Posiblemente, -y sigo expresando mi opinión-, sea el contexto económico y social y no la calidad del producto en este caso, quien desluzca esas  novedades que van a ir conociendose de la nueva release o versión. Algunos de los detalles que se conocen son muy prometedores y creo que han generado inquietud o curiosidad (Firemonkey, las plantillas de estilos y los esperados 64 bits). A mi particularmente me gusta lo que he podido conocer de las plantillas de estilo, que pienso abrirá las puertas a una estetica mas acorde a lo que nuestros usuarios se han ido acostumbrando.

 No. No conozco todavía la nueva versión. Lo que se de ella es lo que se ha podido ver en los videos de las presentaciones que van siendo publicados. En facebook ya comentabamos que durante Agosto y Septiembre, se iban a ir sucediendo las 66 presentaciones de RadStudio XE2, que incluían Nueva Zelanda, Argentina, Australia, Austria, Belgica, Brasil, Canada, Colombia, Republica Checa, Dinamarca, Finlandia, Francia, Alemania, Hungria, India, Indonesia, Italia, Japón, Korea, Mexico, Holanda, Noruega, Polonia, Russia, Eslovaquia, España, Suecia, Taiwan, UK y USA. Esta información estaba enlazada desde http://www.embarcadero.com/world-tour

Así que día a día, progresivamente, van a llegarnos durante el mes de Septiembre mas detalles contrastables y fiables, tanto de las cosas buenas como de las que no lo sean.

Para empezar a ver el tema, creo que podríamos acercarnos al video que lanzó Danysoft. Un video corto, de unos 10 minutos, pero que da una idea general bastante buena del producto. Este video se preparó como antesala de las presentaciones que se celebrarán en Barcelona y Madrid a finales de Septiembre. Podéis consultar las fechas en la cabecera del blog.   

Quizás, lo que parece más llamativo de este lanzamiento es la plataforma visual de FireMonkey, que va a dotar a nuestra herramienta de unas prestaciones graficas mas altas, para desarrollos donde se necesiten este tipo de capacidades, vinculadas al 2D/3D. Hasta ahora era una de las asignaturas pendientes que habían hecho que se dependieran de otros motores gráficos.

Ummmmmmmmm…. imagino que quereis ver a FireMonkey en acción. Existen algunos videos y entradas que han sido publicados en las semanas anteriores y que he ido resaltando en las redes sociales.

Por ejemplo. Podeis ver los enlace de Andreano Lanusse, de fecha 3 y 5 de Agosto:

http://www.andreanolanusse.com/en/a-little-bit-about-firemonkey-and-delphi-xe2/

http://www.andreanolanusse.com/en/video-delphi-xe2-and-firemonkey-app-on-windows-mac-and-ios/

 
 

 Seguimos…

Mas videos donde se muestrans las capacidades de FireMonkey nos llega desde Marco Cantú. Con fecha 24 de Agosto nos dejaba un video en you tube, que se enlazaba al post

http://blog.marcocantu.com/blog/firemonkey_betablog_video.html

 

Y finalmente, rebuscando en los enlaces de Danysoft he encontrado 3 detalles adicionales:

http://www.danysoft.com/productos/software/anticipandonos-a-rad-studio-xe2.html

http://www.danysoft.com/productos/software/firemonkey.html

y http://www.danysoft.com/productos/software/las-nuevas-fronteras-de-la-programacion.html

Es precisamente, este último, que por su brevedad pasa inadvertido pero que contiene un pdf que amplia la información sobre las capacidades gráficas de las nueva versión y anticipa el tema de las novedades en DataSnap.

http://www.danysoft.com/free/xe2-articulo-01.pdf

Habrá que estar atento a los articulos sucesivos que vayan publicandose, ya que toda esta información es necesaria de cara a si en un momento posterior decidimos descargar la trial para conocer de primera mano los cambios, poder apreciar los detalles que de otra forma se nos podrían escapar.

Respecto a nuestra Comunidad sale poco a poco del letargo.

Abríamos boca con las publicaciones de Germán Estevez, en el mes de Agosto:

Germán nos dejó un artículo resumen de lo vivido en esas primeras semanas de Agosto (11/08):

http://neftali.clubdelphi.com/?p=1680

Dadle un vistazo. Eran los primeros coletazos del tour de Embarcadero y recogía las anotaciones de David Intersimone, así como uno de los primeros videos sobre Rad Studio XE2. Destacaba en ese post un programa que le habia parecido interesante y que compartía con nosotros:  IOGraph.

Al Gonzalez, otro gran amigo, compartía un truco (16/08) que permitía anclar una ventana e impedir que fuera movida por el usuario.

Inamovible – http://rescatandoadelphi.blogspot.com/2011/08/inamovible.html 

Y finalmente, tambíen compartía con vosotros desde las redes sociales, las aportaciones de Daniel Luyo, en su blog. El enlace que recoge las entradas de Agosto lo tenéis en el enlace siguiente:

http://danielluyo.wordpress.com/2011/08/

Existen un total de 5 entradas. Me parecierón muy interesantes, ya que comparte con nosotros una visión mas cercana a nuestras inquietudes.

Yya finalizando el mes, en estos días pasados, ha iniciado una serie de articulos sobre las novedades de XE2, Rodrigo, muy interesantes y que os aconsejo seguir: 

http://theroadtodelphi.wordpress.com/2011/09/01/exploring-delphi-xe2-vcl-styles-part-i/

Precisamente, abordan el tema de los estilos, que quizás ha sido de los temas que menos se ha hablado y que en mi opinión puede tener un impacto grande sobre nuestros desarrollos, por cuanto va a mejorar notablemente el acabado de los interfaces. Y eso, como dice mi hijo: ¡Mola un montón!  jajajaja  :-)

Siento si queda alguien en el tintero y no hago referencia al mismo. Para escribir la entrada he tomado como referencia los enlaces destacados en mi facebook y posiblemente queden detalles que hayan pasado inadvertidos. Cuento con vuestra ayuda para destacar lo que falte.

En lo que respecta a las fronteras de nuestra C0munidad, me parecieron especialmente interesantes los articulos enlazados que he podido leer en días pasados de Allen Jolub:

http://drdobbs.com/java/231600390?pgno=1

En estas entradas se aborda algunas inquietudes sobre los problemas de la gestión de datos de algunos servicios web de Google. En concreto el habla de las Agendas pero lo hace extensivo a otros servicios, ya que se sirve de este primero para ver los problemas en el tratamiento de datos en los formatos de intercambio. Os aconsejo que lo leáis porque no tiene desperdicio.

El mes de Agosto se despide dejandonos una imagen muy deteriorada de Steve Jobs

Steve Jobs
Apple Shaken to Core
CEO Resigns

http://www.tmz.com/2011/08/24/steve-jobs-apple-ceo-resigns-retires-computers-ipad-iphone-health-issues-pancreatic-cancer/?fb_ref=.TliojyexDXs.like&fb_source=profile_oneline

Cualquier comentario resulta un tanto superfluo. La verdad es que sentí bastante tristeza al verlo tan deteriorado. Pero eso es ley de vida.

Iniciamos Septiembre. Bienvenido y felicidades por seguir viviendo.

 

 

La web de JM

julio 4, 2011 en Código, Componentes, Delphi, Enlace interesante, Entrada Diario, Nos deja la semana...

Quisiera compartir con vosotros lo que me parece una buena noticia para nuestra comunidad y se que algunos compañeros se van a alegrar. Y es que, tras cruzar unos correos con mi amigo Jose Manuel Navarro, me ha permitido reactivar su blog dentro de mi servidor, de forma que pueda ser accesible de nuevo.

:-)   

Así que aprovecho estas lineas para darle las gracias a Jose Manuel. Ya he comentado anteriormente, en las paginas de mi blog, que es un gran amigo, que conozco desde hace ya bastantes años.  

Hay muchos compañeros que seguían al dia de hoy solicitandole código existente en su blog (yo he recibido recientemente uno de los correos que fue el que realmente me alertó de esa posibilidad de alojar sus paginas), y a mi particularmente, me parecía que, dada la calidad de sus artículos, merecia ser rescatado del silencio, aunque realmente no se haga ésto para darle continuidad.  También quisiera destacar que antes de mi, fue Jose Luis en el rinconcito, quien alojó una gran parte de los mismos. Yo he preferido mantener íntegra la apariencia de su blog, de forma que resulta hasta curioso porque para muchos va a resultar como ver una fotografia congelada en el tiempo, alla por el año 2006.

Espero que os gusta la iniciativa y que me vayais comentando -o directamente a Jose- si existe algun problema con alguno de los enlaces.

La web de JM 

Para el código, Jose Manuel, tambien ha habilitado un repositorio en el que se han añadido tanto código como artículos en https://github.com/jmnavarro, y que puede servir en un futuro para alojar mas contenido propio, sea o no de nuestra herramienta o comunidad. Seguro que, de cualquier forma, será tan interesante su lectura como lo fue la de los articulos que escribió para Delphi y C++ Builder.

No quisiera despedir la entrada sin comentar que lamentablemente, toda la parte que hace referencia a sus escritos vinculados con Bolivia, que reflejan su humanidad y su solidaridad, finalmente no pude incluirlos, dada su extensión y la cantidad de referencias que habían de rehabilitarse, en una estructura web clásica como lo era su blog. Lo digo porque muchos de los que visitaron su pagina posiblemente se pregunten donde están y realmente me apenó verme en la tesitura de excluirlos.

Nada mas, me despido deseando que los disfruteis de nuevo.