Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Formulario Tipo Modal en proyecto MDI? que hago (https://www.clubdelphi.com/foros/showthread.php?t=2284)

danytorres 16-07-2003 19:57:49

Formulario Tipo Modal en proyecto MDI? que hago
 
Un saludo a todos los del foro. El problema es el siguiente necesito sacar un formulario tipo Modal el un proyecto MDI, hasta el momento coloco las demas pantallas en enable:= false, pero quiero quitarme el estar desabilitando las demas pantallas cuando saco una. Agradeceria la ayuda.

_________________
Un saludo a todos

roman 16-07-2003 20:26:18

¿Qué no funciona mostrar el formulario con ShowModal?

// Saludos

guillotmarc 16-07-2003 21:09:49

Hola.

Aunque el proyecto sea MDI, puedes añadir formularios de tipo fsNormal. Yo utilizo estas ventanas no MDI, para crear ventanas modales.

Saludos.

danytorres 16-07-2003 21:23:18

Pero no hay forma de creal una ventana tipo modal siendo esta una fsMDIChild. Necesito crearla de esta manera. Gracias por responder.

delphi.com.ar 16-07-2003 21:26:10

Este tema está duplicado y se ha respondido en este hilo http://www.clubdelphi.com/foros/show...&threadid=2285

roman 16-07-2003 22:13:05

De hecho lo que pasó es que quien formuló la pregunta cambió el hilo. ¡Niño malo! :D

aprendiz2 24-05-2007 08:12:05

Cita:

Empezado por danytorres
Pero no hay forma de creal una ventana tipo modal siendo esta una fsMDIChild. Necesito crearla de esta manera. Gracias por responder.

Cierto, con fsMDIChild no la puedes mostrar Modal.

Si cambias ese formulario a fsNormal, ahi si lo podras abrir en forma Modal ( eso no afecta a tu proyecto MDI para nada. Pruebalo ).

En otras palabras, no te empeñes en que esta ventana tambien tiene que ser MDIChild.

( Comentario personal: He probado los proyectos MDI y no me gustan para nada, mucho problema en la programacion para lograr lo que uno desea... )

Encontre una solucion que me funciona bien...
1 - Da la apariencia de MDI, pero no lo es.
2 - Programacion es facil, como en ventanas normales...

Como ?
1 - El Form principal lo pongo en fsNormal.
2 - Los demas forms, los pongo en fsStayOnTop

De esta forma, da la apariencia que el Form de atras, si esta maximizado, envuelve a los demas Form que abren y cierran.

Los demas Forms siempre se mantienen al "frente" con respecto al principal, aunque se "toque" el form de atras.

Trae la ventaja de tener Forms Visibles e Invisibles , es mas facil la programacion para comunicar valores de un form a otro, en comparacion con los MDI, que hay mas restriccion.

Abrir modales no es ningun problema.

Bueno, esto es solo una opinion propia... cada quien con lo que funcione mejor....

Saludos, espero sirva de algo esto...

Lepe 24-05-2007 16:49:46

El mensaje original es de hace 4 años... pero bueno, las cosas en ese sentido no han cambiado mucho, los MDI siguen estando por ahí (aunque se desaconseja su uso) y la gente trabaja como quiere y le da la gana (esto último siempre ha sido así :D).

El método que propones, me gusta aunque le veo un bug que no me gusta. La ventana que se abre oculta la barra de herramientas del supuesto MDI, al no ser un entorno MDI real, es normal que ocurra.

Otra solución del mismo estilo, es crear las ventanas asignándoles el padre hacia la ventana principal:
Código Delphi [-]
  childWindow := TForm1.Create(frmMain);
  childWindow.Parent := frmMain // esta línea se me olvidó y es la más importante :o :o
Aunque tampoco me convence mucho los efectos que tiene.

Yo si prefiero a los MDI reales y la forma de trabajo con ellos me gusta bastante.

No suelo ocultar las ventanas, sino que las destruyo, pero alguna vez intenté esto y funcionaba:
Código Delphi [-]
type
  TBaseForm = class(TForm)
  private
    Fvisible: Boolean;
    procedure SetVisible(const Value: Boolean);
  public
    { public declarations }
    constructor Create(Aowner:TComponent); override;
    procedure Show;
    procedure Hide;
  published
    property Visible:Boolean read Fvisible write SetVisible;
  end;

implementation

uses publica;

{$R *.dfm}

constructor TBaseForm.Create(Aowner: TComponent);
begin
  inherited Create(aowner);
  visible :=  fsvisible in FFormState;
end;

procedure TBaseForm.Hide;
begin
  ShowWindow(Handle, sw_HIDE);
  FVisible := False;
  DoHide;
end;

procedure TBaseForm.SetVisible(const Value: Boolean);
begin
  if Value <> FVisible then
  begin
    if Value  then  Show
    else Hide;
  end;
end;

procedure TBaseForm.Show;
begin
  ShowWindow(Handle, sw_Show);
  FVisible := True;
  DoShow;
end;

Saludos

Monchi 24-05-2007 17:03:31

Yo uso los MDI y me gusta como funcionan, y no le afecta en nada tener un fsNormal para mostralo en Modal

aprendiz2 24-05-2007 19:16:11

Gracias Lepe !!
 
Muchas gracias por comentar, Lepe !!!

Me encanta ver respuestas como la suya, donde se ve un ejemplo practico y funcional !!!

Considero un gran privilegio para mi, el poder leer sus ayudas a mi persona y otros muchos mas en el foro.

Usted es de los grandes maestros, de quien hay que mucho que aprender, asi como Roman, Seoane, Jhony y otros grandes maestros que veo en el foro. ( disculpen, de memoria no me se todos los nicks ).

Los admiro mucho, sus sugerencias, soluciones y trucos son verdaderas obras de arte !

Es como ver obras de Miguel Angel, DaVinci, etc.

Para mi seria un honor el poder estar sentado cerca de personas como ustedes, ver como desarrollan sus programas, solo mirando, aprendiendo.. !!!

El foro es lo mas cercano a eso.... pero muy distante de lo que seria estar con el maestro.

Del maestro hay que aprender.. !!!

Gracias otra vez !!! Buen dia, y le deseo lo mejor a usted y a todos los foristas !!!!

jhonny 24-05-2007 20:10:08

Siempre que alguien menciona a Da Vinci pienso en el hecho de que escribía de derecha a izquierda y me imagino que la cosa se veía así:

.icniV aD odranoeL noc narapmoc em is aivadot sojel sam y ortseam nu res ed sojel yum ortneucne em euq oredisnoc dadrev riced a orep ,oiratnemoc etse oczedargA. << La cosa arranca aqui.

Es un honor estar en una lista como esta, al lado de Roman y Seoane quienes me llevan por los cachos y por mucho, la verdad es que agradezco que hayas recordado mi nick (Si es que es el mio, claro esta) pero verme allí merece la pena decir que no me lo merezco. Solo me disculpo contigo si he pasado por mal educado al decírtelo, pero esque siento que es mi obligación hacerlo. Gracias. ;)

roman 24-05-2007 20:33:16

En mi opinión, y a juzgar por muchas preguntas que se hacen en estos foros acerca del tema, los MDI no tienen ningún problema inherente, pero es que se intentan usar para lo que no son. Querer mostrar modalmente un formulario MDI es querer usar un MDI para lo que no es.

// Saludos

Lepe 24-05-2007 22:07:34

Me idolatras :D :D

No es para tanto y seguro que el código se puede mejorar ;).

Jhonny: Acabo de perder 2 neuronas leyendo el texto :D :D

Saludos

jhonny 24-05-2007 22:11:58

Cita:

Empezado por Lepe

Jhonny: Acabo de perder 2 neuronas leyendo el texto :D :D

Saludos

Yo queme como 9 al escribirlo :D, ¿Te imaginas los discípulos de Da Vinci?, pobres tipos.

aprendiz2 25-05-2007 04:08:14

y yo que pensaba
 
Cita:

.icniV aD odranoeL noc narapmoc em is aivadot sojel sam y ortseam nu res ed sojel yum ortneucne em euq oredisnoc dadrev riced a orep ,oiratnemoc etse oczedargA. << La cosa arranca aqui.
... y yo que pensaba que eso de la re-encarnacion era solo un cuento !
Saludos !!!


La franja horaria es GMT +2. Ahora son las 13:40:20.

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