Forum > Spanish

Problema con el diseño de aplicaciones con múltiples formularios

(1/2) > >>

iversen:
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:
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.

iversen:
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:
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.

iversen:
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):

Navigation

[0] Message Index

[#] Next page

Go to full version