Seguimos avanzando en la serie... Como os comentaba en la parte segunda, existía un pequeño problema, que mientras se corrige y no se corrige, nosotros podemos salvar de formas distintas. Vamos a buscar la mas sencilla para este caso concreto. TRegEx frees FRegEx while TMatch et al still have a reference to it Bug in... Leer más →
Panel de miniaturas
Hace unos días, leía con interés una de las entradas de Neftalí. Como siempre, su lectura resulta útil, y creo que eso es algo que compartiréis. 🙂 En esa entrada, cuyo enlace incluyo mas abajo, se dejaban unas lineas de código que crean un ejemplo de visor de imágenes, con un control a través de las miniaturas creadas. Son de ese tipo de código que suele nacer a raíz de una pregunta en un foro y que luego, tras resolverla y discutir sobre ella, mueve nuestra curiosidad y nuestro ánimo a retocarlo para compartirlo con otros compañeros en un blog.
Delphi For Android Sneak (Preview 2)
Hoy he añadido al blog el enlace de Lennie De Villiers. Y me visto muy gratamente sorprendido por el video, por lo que no he tardado demasiado a resaltarlo, tanto en el facebook, twitter como aquí mismo. Aunque está en inglés, si yo me he enterado de la película, vosotros también... 😀
Módulo de control de presencia
Vamos a ponernos un poco las pilas ahora que ya han terminado las vacaciones. ¡Volvemos a lo nuestro!, a este breve tiempo que compartimos y que nos mantiene en contacto. Y como hacía ya bastante tiempo que no subía unas lineas de codigo, hoy casualmente, rebuscando en las carpetas perdidas, he encontrado un pequeño ejemplo que tenía preparado para el blog y que accidentalmente perdí.
No me saques los colores
¿Qué tal estáis...? Volvemos tras un verano caluroso. Esta misma noche fue una de las mas calurosas que recuerdo. De hecho, ayer mismo, el termómetro se acerco a los 44º y la tarde fue asfixiante. La disfruté visitando una exposición temporal sobre arqueología Egipcia que se celebra en Alicante, en el Museo Arqueológico Marq, y aunque la capital mantiene unas temperaturas bastantes suaves y agradables por la cercanía del mar, hacía calor. Muy recomendable esta exposición si estáis en la zona, ya que no es demasiado habitual para nosotros ver de cerca una momia y conocer los ritos funerarios de la fascinante y enigmática civilizacion egipcia (El enigma de la momia). Aunque, para ser justos, el visitante se queda con ganas de mas, y no imagino lo agradable y enriquecedor que puede ser conocer el total de lo expuesto en el Louvre, puesto que lo visto en Alicante es tan solo una parte pequeña...
TDBLookupComboBox al escenario (Parte I)
Llevaba varias semanas con la idea de hacer un par de comentarios breves sobre el componente TDBLookupComboBox y mira por donde, hoy parece que tengo unos minutos que voy a intentar aprovechar. Así que vamos a ello. Este componente es bastante clásico (no es nuevo). Está ubicado en la paleta "DataControl", la paleta que Borland reservó en sus primeros días para alojar todos los controles de datos y se justifica, en un contexto donde el usuario selecciona un item entre los valores mostrados en una lista ligada a un conjunto de datos, para asignar un valor como resultado de esta selección, en el dataset destino. Así pues, este valor que va a ser asignado, es por regla general distinto del valor que es mostrado al usuario y también siguiendo el mismo razonamiento, formaría parte de un dato significativo de una tabla maestra respecto a su detalle (eso es algo lógico ¿no?).
La gran división…
Suena bien el título... 🙂 y aunque a primera vista, podamos pensar que la entrada va a tratar del paradigma clásico "Divide y venceras", en este caso concreto, la entrada nos vuelve a hablar de un tema recurrente en el blog, como lo es la separación del interfaz del usuario de las reglas de negocio. Como el autor de la entrada nos dice, Cobus Kruger, justo al empezar, en las primeras lineas: One of the most important principles in building complex software systems, is detaching the business logic from the screens that allow users to view and edit information.
Un día con los mayores (5) y Parte B
Lo primero que tenemos que tener en cuenta es que la clase TRejilla, nos debería proveer la funcionalidad básica para manipular los datos de forma sencilla. Eso es lo que siempre se ha buscado. Así que la clave, en este punto puede estar en valernos de Acciones, que podrán ser asignadas en tiempo de diseño durante la etapa de creación de los módulos de trabajo. Es decir, que nuestro trabajo consistiría básicamente en decidir a tenor de cada uno de ellos, cuales acciones van a quedar disponibles, en la etapa de diseño, sin tener que estar reinventando la rueda continuamente. Esta sería mas o menos la mecánica de trabajo para nosotros a este nivel, durante el desarrollo de nuestra aplicación: Creamos un módulo descendiente de la clase TBrowser, añadimos un componente TRejilla en su interior y ¡voila!, asignamos las acciones que vamos a permitir en aquellos elementos del interfaz que las requieran. Si a este punto añadimos que Ian, hacia formar parte del browser una ToolBar que puede ser receptor de las acciones, el trabajo se simplifica aun mas.
Un día con los mayores (5) Parte A
En esta quinta entrada de la serie, tenemos que abordar la clase TRejilla, que como ya comentabamos en las dos entradas previas, iba a servir de enlace entre la rejilla de datos y el formulario de edición (las clases TBrowser y TDialogo).
Un día con los mayores (4)
Vamos a dar otro paso más... En la tercera entrada de esta pequeña serie, nos centrábamos en la clase TAncestro, y pudimos ver como se convertía en la piedra angular del framework de Ian, de la que iba a heredar cualquier tipo de ventana que pudieramos pensar o necesitar. Ian valora en sus ejemplos, dos arquetipos de ventanas diferenciados: el que representa a la clase TBrowser y el que representa a la clase TDialogo. Es su idea, dicho sea de paso, muy razonable, de acuerdo a su experiencia como experto y en ese intento de simplificar. Quizás en vuestro caso, mientras leéis estas lineas imaginéis otros contextos que hagan necesaria la creación de otros descendientes, de acuerdo a criterios mas selectivos, como por ejemplo pudiera ser la seguridad, donde ciertas ventanas pudieran necesitar un tratamiento especial. Nada es descartable y el framework debería ser una propuesta de trabajo que muchos van a adaptarse de acuerdo a sus necesidades. De hecho, os comento que en mi caso concreto y en lo que respecta a la funcionalidad del Framework, descarté algunas partes que no estaba utilizando, como era la posibilidad de arrastrar registros mediante drag&drop, que Ian sí introduce y pone en práctica. Respecto a las ventanas, al final no me fue necesario crear ningún tipo adicional aunque hubiera momentos en los que sí pude habérmelo planteado.
Un día con los mayores (3)
Se podría decir que, al iniciar esta tercera parte de la serie, en la que vamos a razonar sobre el framework de los cursos de Ian Marteens, nos introducimos en una de las areas más bonitas del mismo, donde los razonamientos formales y la abstracción se destacan sobre otros aspectos más mecánicos y menos atractivos (visto ésto como desarrolladores). No se si coincidireis o no, pero no existe demasiado "mérito" en hacer la asignación de una propiedad ni resulta algo demasiado creativo, salvo que lo vivamos desde la perspectiva del creador de componentes. Más bien, forma parte del elenco de actividades repetitivas, que hacemos diariamente de forma mecánica. Sin embargo, en este caso, establecer relaciones de herencia y uso entre las entidades, es un ejercicio estimulante y enriquecedor. Marteens inicia su periplo al definir una clase base (TAncestro), en la cuspide de la jerarquía que define el dominio de la aplicación. Y conviene decir esto ya que TAncestro no nace de la nada puesto que hereda el comportamiento de la clase TForm, de la cual desciende. Lo cual, nos permite disponer de toda la funcionalidad de los formularios que vamos a manipular. ¿Y por que es conveniente que sea así? Pues como bien explica en los primeros parrafos del ejercicio 3 de la serie c :
Un día con los mayores (2)
Veamos cual es el siguiente paso... En este segundo capítulo vamos a para dar un paso más en la construcción del framework de Ian, creando la estructura del mismo, un esqueleto vacío en el que todavía no vamos a tener en cuenta ni a concretar nada que haga referencia a la lógica real de los datos sino que todavía nos movemos en un nivel abstracto, con acciones que pertenecen al mundo de las ideas como: Guardar, Descartar, Confirmar, etc.
Un día con los mayores (1)
De estas últimas semanas, la mayor parte del tiempo se me ha ido en dos puntos que tienen relación con la serie que vamos a compartir. ¡Es verdad!: El tiempo se escapa de nuestras manos. La expresión es fugaz como el tiempo hace justicia y con razón, porque no podemos hacer nada por retenerlo. Nos queda simplemente el consuelo de que haya servido para algo. En fin... Algo es algo. 🙂
Experimentos, reflexiones y otros artefactos (III)
Como reza esa primera imagen que abre el post, es un buen momento para intentar razonar en terminos de clases, y experimentar con el ejemplo que intentabamos abordar y que nos servía para reflexionar. En él, podríamos capturar la idea de atributo, como ya se ha podido extraer de las dos entradas anteriores, consistía en un rasgo diferenciador que combinado con otros, nos servía para identificar un artículo determinado. Convenimos en aceptar la clase TAtributo como una representación de ese rasgo.
Experimentos, reflexiones y otros artefactos (II)
Nuestro formulario iba creciendo. De hecho habíamos incluído una pequeña modificación que invertía el código y el formulario, comenzaba a parecerse -con la prudencia que hace falta para comentar ésto ya que estas lineas son meramente experimentales- a una hipotética herramienta para generar combinaciones de códigos. Esto nos permite tomar una pequeña dosis de realidad en nuestro razonamiento. Una herramienta que iba a crecer pero ligada desgraciadamente a los componentes que iban formando su interfaz.
Experimentos, reflexiones y otros artefactos (I)
Vamos a iniciar una pequeña serie especialmente dedicada a los programadores que se inician en Delphi y me perdonareis que no tenga la menor idea de cuantos capitulos contiene ni de cuanto tiempo se pueda extender. ¿Uno, dos? ¿quizás tres? ¿veintiuno?. Realmente os confieso que no lo se.
Un enfoque modular para nuestra aplicación. (FUENTES)
Durante estos últimos días, he recibido algunos correos de compañeros solicitandome el codigo fuente del articulo escrito en el Boletin de Delphi, y que llevaba como título "UN ENFOQUE MODULAR PARA NUESTRA APLICACION". En principio la intención era adjuntarlo en la ultima descarga del boletín, pero al final mi amigo Jose Luis Freire olvidó incluirlo. Así que lo mas fácil hasta que contacte con él, es añadir a esta entrada un link para su descarga.
Comentarios recientes