Ir al contenido


Foto

Gestionar Forms de una aplicacion


  • Por favor identifícate para responder
14 respuestas en este tema

#1 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 mensajes

Escrito 31 diciembre 2015 - 09:21

Hola! como veran no soy muy experimentado.. y queria saber en mi aplicacion de facturacion como gestionar los forms..

 

Porque la duda surge porque desde el main se pueden abrir todos los forms que se quieran...lo cual implica uso de memoria para la maquina obviamente.. 

Delphi por defecto me deja minimizar esa "parte" de mi aplciacion osea un form y queda un rectangulo abajo a la izquierda que puede ser restaurado..

 

Entonces pense que, hasta que no se cierra un form determinado, no se puede abrir otro. Para implementar esto la aplicacion debe estar organizada funcionalmente, porque claro, el usuario puede necesitar dos cosas distintas, y el programa puede no permitirle hacer esas 2 cosas a la vez.

 

Lo mas sencillo es que no permita minimizar un form sino solo cerrarlo, de esta manera hasta que no se cierra no se puede ir a otro form..


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 31 diciembre 2015 - 10:09

Me parece que tu problema se soluciona utilizando el concepto de MDI. En Delphi About hay un tema acerca de eso que me parece muy interesante.
 
MDI Development in Delphi. Part I
 
Saludos


  • 0

#3 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 31 diciembre 2015 - 10:57

Yo no te aconsejo MDI, esta deprecado hace bastante tiempo. Va a dar la impresion de ser una aplicacion vieja

 

A mi se me ocurren dos formas de gestionar forms

 

1. La que comentas es ir mostrando todo los form con ShowModal; es una organizacion "verticalista". Tiene el problema de como decis, no podes abrir todas las pantallitas que quieras a la vez; la "otra esquina", seria tener muchos forms desparramados (con Show, no Modales) pero lleva a caos;

 

Otro problema que tiene son los "refrescos en tiempo real", es decir, hiciste algo en una pantallita y tenes que reflejarlo en otras 10. 

 

Con ventanas Modal, cuando cerras podes refrescar lo necesario en el form actual

 

Modal es mas amigable al usuario si se desparraman "accesos directos" a las funciones que pueda llegar a usar en cada ocasion, por ejemplo, entras a ventas -> facturacion, pero deberia poder tener acceso a cargar un nuevo cliente, por ej

 

2. Esto viene del auge movil, pero se esta llevando a escritorio. A mi personalmente me gusta bastante. Consiste en usar Tabs, y en cada tab metes un frame o un form.

 

Suelen estar acompañadas de un menu, por lo general a la izquierda. Ejemplos de este tipo de aplicaciones son, practicamente todo lo nuevo de windows 10, CCleaner, Avast.

 

Obviamente el tener todo cargado lleva a mayor consumo, asi que una alternativa es crearlos en runtime a medida que se accede a la tab deseada. En windows 10 da la sensacion de que se "cuelga" un pequeño instante cuando vas cambiando de pestaña, yo creo que el motivo es porque crea en runtime todo el frame actual

 

Saludos


  • 0

#4 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 mensajes

Escrito 31 diciembre 2015 - 11:13

Gracias a los dos...

 

Lo que hacen en muchos trabajos en mi universidad es el tipico menu de arriba(de la parte superior de la aplicacion) TMainMenu, y luego cada menu con cada opcion dirige a un form... que seria lo mismo que tener a la izquierda como tiene el avast o ccleaner...

 

Osea la pregunta puntual seria si permitir varias ventanas a la vez.. claro se supone que con tabs no se abren nuevas ventanas.. y es por esto que ese problema no existe... y me parece mucho mas ordenado que tener botones en un form...

 

En este form de clientes por ejemplo tengo 4 botones... pero lo que tengo que hacer en vez de abrir nuevas ventanas es cambiar lo que queda a su derecha...

 

Dibujo_zpsmojoe4eb.png


  • 0

#5 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 31 diciembre 2015 - 11:32

Yo no te aconsejo MDI, esta deprecado hace bastante tiempo. Va a dar la impresion de ser una aplicacion vieja

 

 

Bueno, si y no.

 

Me explico, para móviles no existe el concepto MDI, pero eso no quiere decir que las aplicaciones de escritorio deban seguir la moda unitaria por estar "deprecated" o por ser estilo RETRO.

 

Por otro lado, los TAB's son buenos aunque me parece que no es lo más óptimo para todo tipo de aplicaciones.

 

Tal vez por mi formación (edad :D) me incline a favor de las aplicaciones donde se puede acceder a cualquier forma paralelamente a otra. 

 

Y termino con un dicho "De la moda lo que te acomoda" :)

 

Saludos


  • 0

#6 azdin

azdin

    Member

  • Miembros
  • PipPip
  • 20 mensajes

Escrito 31 diciembre 2015 - 04:02

No entendí muy Bien tu pregunta, pero quizás te ayude usando Hilos/Threads


  • 0

#7 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 mensajes

Escrito 04 enero 2016 - 05:06

Yo no te aconsejo MDI, esta deprecado hace bastante tiempo. Va a dar la impresion de ser una aplicacion vieja

 

A mi se me ocurren dos formas de gestionar forms

 

1. La que comentas es ir mostrando todo los form con ShowModal; es una organizacion "verticalista". Tiene el problema de como decis, no podes abrir todas las pantallitas que quieras a la vez; la "otra esquina", seria tener muchos forms desparramados (con Show, no Modales) pero lleva a caos;

 

Otro problema que tiene son los "refrescos en tiempo real", es decir, hiciste algo en una pantallita y tenes que reflejarlo en otras 10. 

 

Con ventanas Modal, cuando cerras podes refrescar lo necesario en el form actual

 

Modal es mas amigable al usuario si se desparraman "accesos directos" a las funciones que pueda llegar a usar en cada ocasion, por ejemplo, entras a ventas -> facturacion, pero deberia poder tener acceso a cargar un nuevo cliente, por ej

 

2. Esto viene del auge movil, pero se esta llevando a escritorio. A mi personalmente me gusta bastante. Consiste en usar Tabs, y en cada tab metes un frame o un form.

 

Suelen estar acompañadas de un menu, por lo general a la izquierda. Ejemplos de este tipo de aplicaciones son, practicamente todo lo nuevo de windows 10, CCleaner, Avast.

 

Obviamente el tener todo cargado lleva a mayor consumo, asi que una alternativa es crearlos en runtime a medida que se accede a la tab deseada. En windows 10 da la sensacion de que se "cuelga" un pequeño instante cuando vas cambiando de pestaña, yo creo que el motivo es porque crea en runtime todo el frame actual

 

Saludos

Y la suite en especial XE2 que es la que uso yo: trae algun componente tab? o hay que añadirle alguno de terceros..

y no es lo mismo un TPageControl? con un frame adentro si se puede


  • 0

#8 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 04 enero 2016 - 09:56

Si, el TPageControl es el control VCL para implementar pestañas; existe tambien un TTabControl pero la diferencia es que, si bien tiene la apariencia de pestañas y todo eso, en realidad es como un solo panel; es decir, es una sola pagina, y hay que implementar el evento OnChange para que, cuando se cambia de pestaña, actualizar los controles
 

Esto lo aclara mejor la documentacion TTabControl y TPageControl

 

En FMX, hay un solo control TTabControl que es similar al TPageControl VCL


  • 0

#9 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 mensajes

Escrito 06 enero 2016 - 05:50

Y no se puede poner un panel con botonos con imagenes como bitbtn, y que al hacer click en uno u otro varie lo que esta a su derecha? me parece mucho mas facil de diseñar y manejar...


  • 0

#10 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 mensajes

Escrito 08 febrero 2016 - 02:40

Bueno comparto con ustedes otra solucion que encontre...

 

Consiste en poner 2 paneles, uno a la izquierda y otro en el resto del form respectivamente..

En el de la izquierda arrastramos y colocamos un TButtonGroup y agregamos Items..(que seran botones obviamente)...tambien le podemos poner el texto que aparecera mediante la propiedad Caption... y la imagen agregan un TImageList y seteandolo en la propiedad Images...

 

una vez teniendo los botones:

 

Podemos usar frames o forms en el panel derecho y manejar el evento onClick..

 

Pero lo que hice en este caso fue colocar un TPageControl con un TabSheet por cada Boton...Luego setie la propiedad TabVisible de cada TabSheet a False... entonces intercepto el evento OnClick de cada Item del ButtonGroup de la siguiente manera..


delphi
  1. procedure TForm14.ButtonGroup1Items0Click(Sender: TObject);
  2. begin
  3. PageControl1.ActivePage:=TabSheet4;
  4. end;

Y establezco la pestaña activa...

tab_zpsrgezpipo.jpg

Lo que podria faltar es dejar resaltado el boton activo..pero es lo de menos..


  • 0

#11 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 08 febrero 2016 - 03:42

Es bastante similar a algo que hice yo cuando salio 10 Seattle:

 

http://delphiaccess....-10/#entry90981

 

Te conviene usar TCategoryButtons que al parecer ya implementa lo de "dejar coloreado"


  • 0

#12 giulichajari

giulichajari

    Advanced Member

  • Miembros
  • PipPipPip
  • 477 mensajes

Escrito 08 febrero 2016 - 05:58

Es bastante similar a algo que hice yo cuando salio 10 Seattle:

http://delphiaccess....-10/#entry90981

Te conviene usar TCategoryButtons que al parecer ya implementa lo de "dejar coloreado"

Si. Pero estoy trabajando con XE2. Ja ya vere si actualizo

Enviado desde mi SM-G530M mediante Tapatalk
  • 0

#13 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 08 febrero 2016 - 07:19

Eh pero el TCategoryButtons esta hace bastante!

 

Yo de hecho lo tengo en Delphi 2010, y si mal no recuerdo una vez vi una consulta por los foros donde usaban Delphi 7..

 

Lo unico que no tenes del ejemplo del post anterior es el TSplitView 


  • 0

#14 Agustin Ortu

Agustin Ortu

    Advanced Member

  • Moderadores
  • PipPipPip
  • 831 mensajes
  • LocationArgentina

Escrito 21 febrero 2016 - 04:07

Refloto el tema...

 

Hoy en esos momentos de "hablar consigo mismo", le di vuelta al problema de los primeros post de este hilo; lo que de alguna forma me aventuré a llamar organización verticalista, es decir, ir abriendo varios form de manera modal

 

De hecho el principal software que desarrollo y mantengo tiene esta organización

 

El único detalle que siempre encontramos cuando charlo con los usuarios es el, "uh, quiero minimizar/cerrar y tengo que cerrar todos los form, después todo bárbaro"

 

La posible solución que se me ocurrió es diseñar la aplicación como esta diseñado el IDE de Delphi: cuando seleccionamos de entre los "layout" o "destokps" disponibles, esta la opcion de "Classic Undocked"

 

En esta vista del IDE, se puede ver una barra superior en donde esta el TMainMenu, el TToolBar y lo más importante para mi caso, la barra superior en donde están los botones de Cerrar, Minimizar y Maximizar

 

Creo que el truco sería crear un form similar, colocarle la propiedad fsStayOnTop en FormStyle y luego configurar el proyecto para que tome a este form como el MainForm de la aplicación

 

Saludos


  • 1

#15 pcicom

pcicom

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 267 mensajes
  • LocationMéxico

Escrito 19 septiembre 2017 - 07:24

Bueno, si y no.

 

Me explico, para móviles no existe el concepto MDI, pero eso no quiere decir que las aplicaciones de escritorio deban seguir la moda unitaria por estar "deprecated" o por ser estilo RETRO.

 

Por otro lado, los TAB's son buenos aunque me parece que no es lo más óptimo para todo tipo de aplicaciones.

 

Tal vez por mi formación (edad :D) me incline a favor de las aplicaciones donde se puede acceder a cualquier forma paralelamente a otra. 

 

Y termino con un dicho "De la moda lo que te acomoda" :)

 

Saludos

 

Saludos

 

Desde mi muy particular punto de VISTA siempre va a depender del alcance de tu aplicacion (DESKTOP), ya que si es muy simple lo puedes hacer con TABS/PAGES etc...  pero si quieres que tu aplicacion sea una aplicacion WINDOWS=Ventanas (DESKTOP) es mejor usar en modo MDI ya que podras tener informacion en VENTANAS Distintas y consultarlas cuando requieras informacion especifica de cada ventana,  no me imagino haciendo que los clientes cambien de TABS/PAGES cuando quieran consultar una u/otra informacion.   

Tal vez porque somos de la vieja GUARDIA..  no veo muy funcional lo que se platica..     para MOVILES todo es distinto y generalmente no suelen ser aplicaciones 100% centradas en cubrir todas las necesidades, suelen casi siempre cubrir partes como accesos a consultas de informacion/enlaces etc...

 


  • 1




IP.Board spam blocked by CleanTalk.