Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #12  
Antiguo 09-12-2014
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Lo que estas persiguiendo es el elusivo sueño de la multi-plataforma universal, completa, funcional, eficiente y bonita.

Spoiler?

Eso NO EXISTE.

Es la fantasia mas grande, costosa y quita-tiempo-dinero-recursos de la computación.

Aun cuando pienses que es mucho mas simple ("son solo grillas, todo en windows") es el mismo problema, pero a una escala menor. Puedes resistirte a la idea que te presento, argumentando que debería ser muy facil... pero es algo que décadas de experiencia en computación han probado ser cierto.


---

El problema de que esta ilusión y fantasia sea tan creíble es que puede ser aparentemente facil de lograr. Es como un linea que va de facil a imposible, y dependiendo, puede que sea facil o imposible.

Como se llega a una posible solución?

Se crea una sub-mini-plataforma (o: especificación o: runtime o similar) y se reconstruye sobre ella todo desde cero, apuntando a N-clientes/plataformas/targets/etc. Entiende en adelante con "plataforma" cualquier cosa que trata de unificar multiples cosas en un concepto, estilo, diseño unificado.

Esto es otra forma de decir que la multiplataforma persigue el principio de la mediocridad y genera una nueva plataforma que es una version inferior y/o diferente de cualquiera sobre la que se construya:

http://xkcd.com/927/

Lo que quiero decir y es importante entender es que "multiplataforma" no es " app en N plataformas" sino "app en una sub-mini-plataforma que emula a N-plataformas" por eso siempre hay una(s) plataformas que sufren mas que otras (ej: Java corre mejor en Unix que Windows, HTML en Firefox (o Safari, o Chrome, eso cambia todo el tiempo) que en IE, OpenGL en *nix, etc)

Mientras mas cerca a la maquina, mas posible. Mientras mas cerca al usuario, menos posible.

Si lees sobre MVC (modelo-vista-controlador) veras que la parte de modelo es muy viable hacerla generica, el controlador casi pero la vista *no*.

-----

Lo que quieres hacer se hace así:

Creas una especificación de lo que es una grilla a nivel generico. Lo que dices: Columna1 = Texto Just. Izq, Tipo= Numerico, Etc. (el modelo). Es irrelevante si lo metes en JSON, archivos .ini o lo que sea. Eso no es el problema.

Luego creas un adaptador (el controlador) que conecta a cada tipo especifico de grilla (la vista) y traduce de GrillaX a tu modelo y viceversa.

Osea:
Cita:
MiEspecificacion.Alineacion = Izquierda | Centro | Derecha | Justificado

Dentro de MiTraductorDeEspecificacion

SubClase: ParaGrillaX

--GrillaX.Column1.TextAlign = ConvertirAGrillaX (MiEspecificacion.Alineacion)

ParaGrillaY

--GrillaY['col1'].Format.Text.Align = ConvertirAGrillaY (MiEspecificacion.Alineacion)
Lo simple sera relativamente simple, y lo demás quien sabe. El problema es que eventualmente te encontraras conque GrillaX hace trivial hacer tal cosa pero GrillaY no.

-----

Consejo? No hagas esto, o no hagas algo mas complejo de usar la funcionalidad que ya tiene la grilla de manejarse a si misma.

En vez de seguir la TEORICA VENTAJA (e ilusoria, falsa, quita tiempo, etc) de la solucion generica, usa la MEJOR opcion que tengas en la plataforma que tengas que resuelva de la mejor forma posible la tarea que tengas que resolver. Reducir las capacidades de tu solucion al nivel de la mediocridad no vale el esfuerzo.

P.D: Es MUY deseable crear soluciones genericas y todo eso. Siempre y cuando sepas y entiendas que a nivel de modelo/controlador es donde es factible y correcto eso esta bien. Pero tarde o temprano hay que saltar de lo generico a lo concreto y en el momento que se llega a lo concreto lo generico, por pura logica, deja de existir.

Ademas, y esto es algo difícil de entender, la OO + Estado es ENEMIGA de la generalización. Solo las funciones puras permite generalizar de forma global.

Osea: En el momento que entras a configurar sub-clases, se pierde la habilidad de aplicar soluciones genericas. Osea: Mientras mas cerca estas de resolver la tarea, menos generico puedes ser. Osea: Lo concreto es enemigo de lo generico. Osea: Si haces la forma como le sirve al usuario, has llegado al fin.

Las interfaces de usuario es algo concreto. Es por eso que se resisten a cualquier intento de hacerla supergenericas. Es por eso que es perdida de tiempo multi-plataformalizarlas.
__________________
El malabarista.

Última edición por mamcx fecha: 09-12-2014 a las 00:53:51.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consejos para conexión a MySQL keine1lust MySQL 11 10-10-2012 22:39:46
Información y consejos para proyecto web Casimiro Noteví Internet 46 15-08-2010 01:39:34
Consejos para ahorrar. marcoszorrilla La Taberna 3 03-02-2007 01:59:55
Consejos para ventanas modales ? Tecnic2 OOP 14 16-10-2006 22:37:20
Consejos para desarrollar en equipo Onti Varios 1 15-01-2004 17:50:25


La franja horaria es GMT +2. Ahora son las 14:33:27.


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