FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
¿Como construir una aplicación multiplataforma?
Un saludo
La pregunta va más para los compañeros que ya han desarrollado con Firemonkey: hasta ahora no había desarrollado para multi dispositivos y me toca realizar un proyecto nuevo para que corra en Windows, OSX, iOS, Android. Con la plataforma Windows estaba acostumbrado al manejo de ventanas modales, MDI, y uso el framework básico Un día con los mayores . Me comentan que el ventaneo en móviles ya no se maneja igual, que las ventanas modales ya no existen como tal y me sugieren el modelo: Una sola ventana (MainForm) y ahí incrustar Frames bajo demanda. La aplicacion es un CRUD que correrá en equipos de sobremesa para alimentar los datos de un POS, pero tambien sobre tablets, celulares están descartados. El diseño es un menú tipo lista a la Izquierda y deja libre el resto de la pantalla. Originalmente lo requerian para Win, Mac y el tema de ventaneo no era problema, incluyeron las tablets y ya cambió todo. Cómo han diseñado las aplicaciones internamente? Qué técnicas usan para el manejo de ventanas o frames? Si alguien ha adaptado este Framework para Firemonkey y móbiles le agradeceria me orientara para igual usarlo con Datasnap REST. Gracias de antemano
__________________
eLcHiCoTeMiDo - Rompecorazones profesional Yo no soy presumido; ¿Pero de qué sirve mi humilde opinión contra la de los espejos? Salva a un nylon, usa prendas de piel de foca |
#2
|
||||
|
||||
Desconozco totalmente el framework que comentas, aun asi te comparto mi opinion.
Uno de los paradigmas mas populares es tener el MainForm como comentas y ponerle un TTabControl. Aca un pequeño tutorial A mi particularmente me gusta ocultar las pestañas, seteando la propiedad TabPosition al valor TTabPosition.None De este modo la unica forma de navegar es hacerlo programaticamente (es decir, cambiando la propiedad ActiveTab o bien por el indice, usando TabIndex). Nuevamente mi estilo preferido de hacerlo es usando el metodo SetActiveTabWithTransition ya que de este modo se realiza la tipica animacion deslizante y queda mucho mas elegante. Tambien es posible usar descendientes especializados de TAcion, tales como TNextTabAction y TPreviousTabAction Ejemplo aca Luego lo que suelo hacer es crear un menu (inspirado en los de las aplicaciones de Google), para esto utilizo TMultiView. Acá hay un ejemplo y si revisas en los ejemplos que vienen con Delphi todavia hay mas. Tipicamente dentro del TMultiView metes botones o un listbox o algo que implemente un menu. Luego conectas cada menu con el TAction que muestra el Frame que corresponda o bien escribes eventos estilo OnClick Luego lo que sigue es tanto meter TFrames como comentas o si quieres TForms dentro de las pestañas. En Firemonkey tenes gran flexibilidad a la hora de crear controles compuestos, porque cualquier control puede ser contenedor de otros controles. Esto hace posible que puedas meter un Frame entero dentro de un TTabItem. Para hacerlo basta con tener un procedimiento asi, en donde en realidad se puede escribir de esta manera para que sea mas flexible:
Luego para crear los Form/Frame bajo demanda basta con utilizar propiedades dentro de tu Form principal, de este estilo:
Si lo que queres es ahorrar memoria al maximo, quiza lo ideal sea realizar la creacion del Frame cuando realizas el cambio de pestaña (es decir, cuando hacen click en el menu, creas el Frame, lo incrustas en la nueva pestaña y luego cambias la pestaña activa) y no mantener variables de instancia Con respecto al acceso a datos y CRUD, no hay diferencias en cuanto a la programacion multicapas con la VCL. Sigues accediendo al servidor DataSnap a traves de la clase proxy que generan los asistentes (TServerMethodsClient). Lo que quiza si cambia un poco es la presentacion, aunque cosas como LiveBindings (a mi no me gustan mucho) te pueden ahorrar tiempo y hacer la curva de aprendizaje mas amigable |
#3
|
||||
|
||||
Lo *mas correcto* a cara del usuario es que una app IOS funcione y luzca como una app iOS, no como una windows enchuzpada.
Asi que puedes reusar widgets parcialmente, pero construirías una interface x plataforma. Esta es la opcion profesional. No es solo lo visual. Es la interacción. Una app iOS tiene una interacción *totalmente diferente* a un desktop. Una forma inferior, pero potencialmente pasable, es hacerla como si fuera una app web. Al menos asi, tendria el usuario una similitud con algo que ya conoce. Nota, sin embargo, que en Web usan el término "Responsive" para denotar que la pagina se debe ajustar al tamaño de la ventana (que muchas veces se traduce: Para cada tipo de dispositivo - desktop, celular, tableta, etc), asi que es el mismo tema desde otro angulo. Una app que sea *visualmente* idéntica en toda plataforma es casi siempre sinonimo de mediocre.
__________________
El malabarista. |
#4
|
||||
|
||||
Estoy muy de acuerdo con lo que dice Mario
Lo interesante con Delphi es que el codigo de logica de negocios es casi 100% reutilizable. Lo complicado y tedioso es hacer los GUI (aunque parezca mentira) porque tienes que *copiar* el look&feel de la plataforma en cuestion y su filosofia. El truco es que las clases que hagan GUI solo hagan GUI! Es decir, manejar la presentacion y luego la interaccion esperada. De este modo tendrias 3 o 4 aplicaciones en donde solo cambias la presentacion pero comparten el corazon (logica de negocios+acceso datos) A mi forma de ver las cosas abstraer el look&feel es una perdida total de tiempo y muchisimo esfuerzo y terminas logrando algo mediocre como muy bien dice Mario. |
#5
|
||||
|
||||
Delphi tiene una tecnologia en la que te permite definir una "View maestra" (o Master View) con todo lo "comun" y luego Views especificas para cada tipo de target (target = sistema operativo + dispositivo). Esto es a nivel de TForm. Osea tendrias un TForm "maestro" con todo los controles, propiedades, eventos y codigos comunes a todos, y luego creas un Form especifico para cada target. Es "similar" a la herencia visual, pero en este caso en realidad no tenes varias clases sino que se utiliza un distinto archivo recurso (.fmx, el .dfm de Firemonkey) para instanciar el Form. FMX elije el recurso de acuerdo al dispositivo en cuestion en donde esta corriendo. Mas info aca
|
#6
|
||||
|
||||
Aunque no soy el destinatario de la respuesta, no puedo mas que agradecer a Agustin el trabajo en elaborar este "mini tutorial" ya que a mi tambien me servira.
Estoy intentando migrar de VCL a FMX por el tema del multidispositivo aunque no creo que lo implemente en moviles aunque puede que si en tablets. Repidot gracias Josep |
#7
|
||||
|
||||
#8
|
||||
|
||||
Aunque suelte una tontería (como casi siempre) yo particularmente pienso que es complicado intentar unificar el funcionamiento de una aplicación para escritorio/tablet a no ser que sea algo muy simple.
Yo en particular tengo la manía de intentar, en las aplicaciones de escritorio, que (por ejemplo) se use el ratón lo menos posible y le doy al programa un "sistema", por así decirlo, de funcionamiento que sería imposible de conseguir con una tablet o un móvil, sin tener en cuenta de que no es lo mismo manejar una pantalla de 17" que las de los dispositivos móviles que son bastante más pequeñas. Con todo esto lo que quiero decir es que, aunque todavía no he hecho nada para dispositivos móviles, si en algún momento tengo que hacer algo me decantaré por hacer formularios independientes para escritorio/tablets. Saludos
__________________
Be water my friend. |
#9
|
||||
|
||||
Gracias AgustinOrtu, muy ilustrativa tu opinión, sirve muy bien de guía. Con respecto a los demás comentarios del look & feel de cada plataforma, acertados de los demás compañeros, se lo dejo a la plataforma ya que manejamos el modelo vista-controlador. Gracias por su opinión y si surgen mas ideas y experiencias, son bienvenidas.
__________________
eLcHiCoTeMiDo - Rompecorazones profesional Yo no soy presumido; ¿Pero de qué sirve mi humilde opinión contra la de los espejos? Salva a un nylon, usa prendas de piel de foca |
#10
|
||||
|
||||
Creo que en este caso hay que insistir en dos importantes cosas que hay que hacer cuando se quiere que la aplicación sea multiplataforma:
La primera, que debe planificarse bien. Hay que perder mucho tiempo en esta fase, más de lo normal. Yo creo que primero hay que planificar como si fuera para una plataforma y luego, antes de codificar nada, ver qué problemas dará en otras plataformas y modificarlo. No empezar a escribir nada de código hasta que esté todo claro. La segunda, separar la parte lógica de la parte gráfica. Esto debería hacerse incluso si el proyecto no es multiplataforma, pero es vital si lo va a ser. Al separar ambas partes será más fácil mantener el programa, ya que la parte lógica la mayoría de las veces puede mantenerse idéntica en todas las plataformas, siendo la parte gráfica la única que suele cambiar. |
#11
|
|||
|
|||
Como descargo embarcadero ex7 para programos sistemas para moviles
|
#12
|
||||
|
||||
En la web de embarcadero.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#13
|
|||
|
|||
Lo quiero conseguir crakeado tu no lo tienes?
|
#14
|
||||
|
||||
Sí, mira aquí. En el punto 19.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#15
|
|||
|
|||
Desarrollo para móviles y multidispositivos
Hola amigo, el desarrollo con Firemonkey es muy sencillo, si tienes la base de Delhi te adaptarás rápido, lo más complicado en mi opinión es tener en cuenta el diseño resposive, es decir que se adapte a las distintas resoluciones, también debes tener presente las características especiales de cada dispositivo, ejemplo si usas una API en particular de Windows debes especificar en el código que para Windows ($IFDEF MSWINDOWS.....) use este código y para Android este otro, en fin nada complicado, me adapté muy fácil, verás como vos también lo harás.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Crear aplicación multiplataforma con base de datos en la nube | cocute | Desarrollo en Delphi para Android | 12 | 07-04-2015 11:48:59 |
¿Como construir un IDE? | JXJ | Varios | 11 | 12-01-2009 23:59:36 |
¿Como realizar aplicaciones multiplataforma? | burasu | Linux | 10 | 22-09-2005 00:12:23 |
Como construir un cliente IRC | JXJ | Internet | 2 | 03-05-2005 01:04:10 |
informacion para construir una aplicacion de tres capas | muli | Providers | 2 | 23-02-2004 02:22:04 |
|