* * *

Author Topic: Problema con el diseño de aplicaciones con múltiples formularios  (Read 2754 times)

iversen

  • New member
  • *
  • Posts: 6
Buenas tardes,
aunque he puesto un post similar en el foro específico en inglés, acudo también aquí para ver si puedo aprender a hacer mis aplicaciones de mejor forma.
Hace unos años, estuve en una empresa en la que programaba en Delphi (versiones antiguas no XE) y estoy acostumbrado a las aplicaciones en las que tienes tu menú y dentro de la ventana principal se van abriendo los distintos formularios que vas creando.
Lazarus por defecto como sabréis no funciona así, pero no me termina de convencer que se abran distintas ventanas para cada formulario, que pueden "andar" por cualquier lado de la pantalla.
Para hacerlo más como estaba acostumbrado dí con una solución que consiste en abrir los formularios dentro de un panel, de la siguiente forma:

if not assigned(Camaras) then
begin
  Camaras:= tCamaras.Create(application);
  Camaras.Parent:=panel1;
  Camaras.Show;
end
else
  Camaras.Show;

Con las siguientes propiedades en "Camaras":
Align : alNone
BorderStyle: bsSizeable
FormStyle: fsNormal
WindowState: wsMaximized

El resultado que se consigue es muy similar al que usaba en Delphi, pero el problema queda en que los campos de texto: Edit, MaskEdit, Memo...
ya sean con o sin conexión a DB quedan bloqueados, no se puede escribir en ellos, de hecho ni situar el cursor, seleccionar texto, nada.
Sin embargo el resto de las funcionalidades van perfectamente, accesos a BD, movimientos entre registros, botones, checkbox.

Así pues, me gustaría saber si alguien ha hecho algo similar, como lo ha solucionado. ¿Y por otro lado hay algo que no este haciendo de la mejor manera? ¿Como recomendaríais hacer los programas de este estilo en cuanto a Diseño de formularios?
Quizás tenga una forma de trabajar un poco viciada y me este "perdiendo algo", o esté desaprovechando opciones de Lazarus o hacer interfaces más amigables.

Toda sugerencia o ayuda será más que agradecida.

Saludos

RayoGlauco

  • Jr. Member
  • **
  • Posts: 78
  • Beers: 1567
Re: Problema con el diseño de aplicaciones con múltiples formularios
« Reply #1 on: March 06, 2018, 01:48:58 pm »
Hola, iversen,

Yo no uso este tipo de organización de ventanas, pero parece ser que hay un componente para Lazarus que proporciona un funcionamiento similar a la interfaz MDI:

http://wiki.freepascal.org/MultiDoc/es

Un saludo.
To err is human, but to really mess things up, you need a computer.

iversen

  • New member
  • *
  • Posts: 6
Re: Problema con el diseño de aplicaciones con múltiples formularios
« Reply #2 on: March 06, 2018, 02:00:19 pm »
Buenas y muchas gracias RayoGlauco, le echaré un vistazo.
Por otro lado aprovecho para preguntarte, ¿que tipo de organización de ventanas utilizais en aplicaciones de este estilo?

Un saludo!

Edson

  • Hero Member
  • *****
  • Posts: 929
Re: Problema con el diseño de aplicaciones con múltiples formularios
« Reply #3 on: March 06, 2018, 07:47:05 pm »
En VB6 estaba acostumbrado a los formularios MDI. Pero desde que uso Lazarus, no he tenido la necesidad de volver a MDI. Tal vez algunas aplicaciones muy específicas requieran esa interfaz.

Me parece que el bloqueo de TEdit que mencionas, podría solucionarse detetctando el evento "OnClickDown" y luego activando el formulario necesario, porque veo que el problema empieza en que no se cambia el enfoque al seleccionar a un formulario hijo.
Lazarus 1.6 - FPC 3.0.0 - x86_64-win64 on  Windows 7

iversen

  • New member
  • *
  • Posts: 6
Re: Problema con el diseño de aplicaciones con múltiples formularios
« Reply #4 on: March 07, 2018, 04:37:13 pm »
He encontrado otra solución que también me ha agradado, como otra alternativa al componente MultiDoc.
Usando un PageControl, nos quedaría algo así (donde cada formulario se añade en una pestaña nueva y luego podemos ir cerrando a nuestro gusto):

RayoGlauco

  • Jr. Member
  • **
  • Posts: 78
  • Beers: 1567
Re: Problema con el diseño de aplicaciones con múltiples formularios
« Reply #5 on: March 07, 2018, 04:44:29 pm »
A mí me gusta esta última solución.

En algún programa he usado el PageControl, con varias pestañas para presentar diferentes informaciones relacionadas. Queda limpio y permite acceso rápido a mucha información.
To err is human, but to really mess things up, you need a computer.

daragor

  • New member
  • *
  • Posts: 12
    • Blog Webscom
Re: Problema con el diseño de aplicaciones con múltiples formularios
« Reply #6 on: April 13, 2018, 11:25:34 pm »
Hola muchachos, con respecto a lo planteado, si.. son interfaces MDI, cuando empece con lazarus he planetado casi el mismo post q iversen ya que venia de visual foxpro y me sentia perdido con los formularios volando.

Yo como solucion a lo que dices, cuando es necesaria una interfaz más "medida" uso paneles, y los forms toman como parent el panel del un "main form". Me explico en un primer formulario creo el que seria la ventana principal, ahi mismo coloco un panel y cuando voy creando los forms desde un menu o botonera, configuro su parent con el panel... le paso un ejemplo de codigo de un menu que abre el segundo formulario:

Code: Pascal  [Select]
  1.   TForm2:= TForm2.Create(Self);
  2.   TForm2.Parent:= fbase;
  3.   TForm2.Align:= alClient; //toma todo el ancho del panel
  4.   TForm2.Show;
  5.  

Lo que si creo que a la hora de cerrar el TForm2 deben liberar con Free o Destruirlo, y tambien deberian controlar en el boton o menu de invocacion que no se encuentre ya creado...

saludos
Inculcando el software libre.
https://www.webscom.net

 

Recent

Get Lazarus at SourceForge.net. Fast, secure and Free Open Source software downloads Open Hub project report for Lazarus