Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Como puedo luego de abrir un Login, pasar el MainForm al Principal(MDIForm) (https://www.clubdelphi.com/foros/showthread.php?t=48115)

maxibaco 15-09-2007 22:00:57

Como puedo luego de abrir un Login, pasar el MainForm al Principal(MDIForm)
 
Holassssss!!!!

En Principio, y ya de ante mano agradezco el tiempo de cada uno de ustedes en leer mi problema!! Soy fanático de este Foro, y ya he evacuado muchísimas dudas desde que estoy registrado.

Obviamente siempre busco por todos los hilos, hasta que no obtengo respuesta, y es por eso que estoy aquí!!

Tengo el siguiente problema!! Con las malditas aplicaciones MDI.

Es asi, estoy haciendo una aplicacion que al ejecutarla, primero abre la ventana deloguin para introducir usuario y clave como todas. En caso de cancelar se cierra la aplicacion y listo! En caso de aceptar carga el perfil del usuario correspondiente y se habilitan los manues!!

Hasta ahi todo bien, el problema que tengo es que mi FPrincipal, es obviamente el MainForm y esta definido como MDIForm, asi todos los MDIChild se habren dentro de el. Pero encuentro el siguiente problema:

En las opciones del Proyecto, defino el MAINFORM al FLogin, para que se habra pimero, y cuando quiero abrir cualquier child, me tira el siguiente error:

... "Cannot create form. No MDI forms are currently active" ...

Ahora bien.. según lo que entiendo es porque el MAINFORM no es el MDIForm(FPrincipal). Entonces corri el FPrincipal hacia el primer lugar, dejandolo como MAINForm, y anda perfecto!!! Me habre todos los hijos dentro de este.
Hice otra prueba, defini tanto el FLogin como el FPrincipal como MDIForm, y todos los hijos me los abre en el FLogin, con lo cual supuse que toma el padre al MAINFORM.

PREGUNTA:
Como puedo hacer para cambiar de lugar y ponerlo como mainform una vez ejecutado el Login y entrado a la aplicacion? O mejor Dicho, como puedo hacer para que no tire ese error, y tener mi FPrincipal como Padre y todas las ventas como hijas!!!

Mil Gracias!! Saludos a toda la comunidad!!

PD: Una solucion que pense es que el login sea tambien una hija del FPrincipal, pero yo no quiero que se vea detras todo el sistema, sino que aparezca solo la ventana del Login. Se puede hacer?

PD2: Odio los MDIForm y MDIChild!!!! :mad:

paldave 16-09-2007 00:59:08

Una de las soluciones es esta:
1) Pones en el FLogin la propiedad FormStyle=fsNormal.
2) Pones el FLogin como MainForm.
3) Editas el código del proyecto:
Código Delphi [-]
program Project1;

uses
  Forms,controls,
  FPrincipal in 'FPrincipal.pas' {FPrincipal},
  FLogin in 'FLogin.pas' {FLogin};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TFLogin, FLogin);
  FLogin.ShowModal;
  if FLogin.ModalResult <> mrCancel then
  begin
    FLogin.Free;
    Application.CreateForm(TFPrincipal, FPrincipal);
    Application.Run;
  end;
end.
entonces dependiendo de como cierres el formulario FLogin (mrCancel o mrOk) abrirás o no el principal.
No olvides agregar en uses la unidad controls.

Espero te sirva. Saludos.

maxibaco 16-09-2007 01:16:56

mmmm... hay algo que no esta bien...
 
Muchas Gracias por responder PALDAVE!!!

Ahi estoy probando pero me tirar error en la linea:

Application.MainFormOnTaskbar := True;

probe con:
Application.MainForm.OnTaskbar := True;

Pero no reconoce el evento OnTaskBar!! Para que se utilizaria??

Ya agregue la uses controls como dice el ejemplo.

M.Gracias!!

paldave 16-09-2007 01:26:57

Eso lo genera automáticamente Delphi 2007.
Si tienes otra versión omite esa línea.

maxibaco 16-09-2007 01:33:16

Solucionado
 
ahh....... Con razon!! Sí, estoy usando Delphi 7!!

Bueno querido Paldave.. Funciona perfectamente!!!

Mil gracias por tu ayuda!! Sigo confirmando mi teoria!! Que son los mejores!!

Gracias a Todossssssss!!!!!! Exitos!

ixMike 22-09-2007 00:03:43

Bueno,

quizás llego tarde, pero aquí hay algo que igual te sirve de ayuda (ya es un tema que se ha tratado).

Saludos.

maxibaco 22-09-2007 00:09:57

Gracias Amigo!!!
Todo suma!!!

Un abrazo!


La franja horaria es GMT +2. Ahora son las 06:13:37.

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