Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-02-2017
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
¿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
Responder Con Cita
  #2  
Antiguo 22-02-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
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:

Código Delphi [-]
procedure EmbedControl(const Target: TControl; const Parent: TFmxObject);
begin
  while Target.ControlsCount > 0 do
    Target.Children[0].Parent := Parent;
end;

Luego para crear los Form/Frame bajo demanda basta con utilizar propiedades dentro de tu Form principal, de este estilo:

Código Delphi [-]
function GetFrameXXX: TFrameXXX;
begin
  if not Assigned(FFrameXXX) then
  begin
    FFrameXXX := TFrameXXX.Create(Self);
    // incrustar en pestaña correspondiente
    EmbedControl(FFrameXXX, TabControl1.Tabs[Indice]);
  end;

  Result := FFrameXXX;
end;

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
Responder Con Cita
  #3  
Antiguo 22-02-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.927
Poder: 26
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
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.
Responder Con Cita
  #4  
Antiguo 22-02-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
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.
Responder Con Cita
  #5  
Antiguo 22-02-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 16
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
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
Responder Con Cita
  #6  
Antiguo 22-02-2017
Avatar de jafera
jafera jafera is offline
Miembro
 
Registrado: may 2007
Ubicación: Llagostera (Girona)
Posts: 582
Poder: 18
jafera Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 22-02-2017
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por AgustinOrtu Ver Mensaje
Un montón de cosas útiles.
Chapeau Agustín.


LineComment Saludos
Responder Con Cita
  #8  
Antiguo 22-02-2017
Avatar de newtron
[newtron] newtron is offline
Membrillo Premium
 
Registrado: abr 2007
Ubicación: Motril, Granada
Posts: 3.591
Poder: 21
newtron Va camino a la fama
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.
Responder Con Cita
  #9  
Antiguo 23-02-2017
Avatar de rcarrillom
[rcarrillom] rcarrillom is offline
Miembro Premium
 
Registrado: dic 2004
Ubicación: UK / North Sea / Norway / Golfo de México / Frente a mi Laptop
Posts: 219
Poder: 20
rcarrillom Va por buen camino
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
Responder Con Cita
  #10  
Antiguo 24-02-2017
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.003
Poder: 26
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #11  
Antiguo 24-06-2017
Javier13 Javier13 is offline
Miembro
NULL
 
Registrado: jun 2017
Posts: 34
Poder: 0
Javier13 Va por buen camino
Como descargo embarcadero ex7 para programos sistemas para moviles
Responder Con Cita
  #12  
Antiguo 24-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En la web de embarcadero.
Responder Con Cita
  #13  
Antiguo 24-06-2017
Javier13 Javier13 is offline
Miembro
NULL
 
Registrado: jun 2017
Posts: 34
Poder: 0
Javier13 Va por buen camino
Lo quiero conseguir crakeado tu no lo tienes?
Responder Con Cita
  #14  
Antiguo 24-06-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.257
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Sí, mira aquí. En el punto 19.
Responder Con Cita
  #15  
Antiguo 21-08-2017
disley disley is offline
Registrado
 
Registrado: jun 2006
Posts: 1
Poder: 0
disley Va por buen camino
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.
Responder Con Cita
Respuesta



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
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


La franja horaria es GMT +2. Ahora son las 00:52:14.


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