Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-05-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
Error al llamar a un form hija

Tengo un pequeño problema, me explico, tengo un form1 principal con los clasicos edit de "usuario", "pasword", etc... desde form1 llamo a otro form2 con la propiedad fsMDIForm que me va a servir de formulario padre, y dentro de este tengo un boton para llamar a una ventana hija, con el siguiente codigo:
Código Delphi [-]
  if Form3=nil then begin
    Form3:=TForm3.Create(Self);
    Form3.FormStyle:=fsMDIChild;
  end;
  Form3.Show;
Cuando pulso el boton para abrir el form3 me aparece el siguiente error:
Message : Cannot create form. No MDI forms are currently active.
Alguien me puede decir que tengo mal.
un saludo.

espero haber publicado el hilo en el lugar correcto.
Responder Con Cita
  #2  
Antiguo 29-05-2011
Diego666 Diego666 is offline
Registrado
NULL
 
Registrado: oct 2010
Posts: 7
Poder: 0
Diego666 Va por buen camino
Post

Tal vez esto te Sirva ..

Código Delphi [-]
 var
 Forma: TPasswordDlg;
 begin
  Forma := TPasswordDlg.Create(Forma);
   Forma.Caption := 'Validar Contrasenas';
        Forma.FormStyle:=fsMDIForm;
        Forma.ShowModal;
        Regresaconecion:=Forma.TerminalLocal.Text;
 end;

Saludos !!
Responder Con Cita
  #3  
Antiguo 29-05-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
Diego666; te agradezco tu respuesta, pero no acabo de entenderla.
el Form2 (formulario Padre)
Código Delphi [-]
  Form2:=TForm2.Create(Application);
  Form2.ShowModal;
me lo crea correctamente, el problema lo tengo cuando desde el Form2 intento crear el Form3 que es un formulario hija.
Responder Con Cita
  #4  
Antiguo 30-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Thoma.

Revisá este [ enlace ], ahí se explica lo que te está sucediendo.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 30-05-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
Gracias ecfisa, el tema me ha quedado claro.
[FONT='Calibri','sans-serif']Entonces según esto, el Form1 siempre tiene que ser el “padre”; ahora bien, ¿cómo puedo hacer para que antes de visualizar el Form1 (padre), me abra el Form2 (para pedir el usuario) y si es correcto entonces pasar a visualizar el Form1 y si no es correcto cerrar la aplicación?[/font]
Responder Con Cita
  #6  
Antiguo 30-05-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
Bueno, creo que he encontrado la solución.
He puesto en el evento “onShow” (antes de que el formulario se haga visible) del formulario padre la apertura del formulario “Usuario”.
Responder Con Cita
  #7  
Antiguo 30-05-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Thoma.

Me alegro que lo hayas resuelto, otra posibilidad es poner en tu poyecto:
Código Delphi [-]
begin
  Application.Initialize;
  Application.CreateForm(TMDIForm, MDIForm);
  Application.ShowMainForm:= False;
  Application.CreateForm(TFrmPassword, FrmPassword);
  FrmPassword.ShowModal;
  Application.ShowMainForm:= True;
  Application.Run;
end;
Donde MDIForm es tu form MDI principal y FrmPassword es el form donde se ingresa usuario y contraseña.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 30-05-2011 a las 09:32:49.
Responder Con Cita
  #8  
Antiguo 03-06-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
Gracias ecfisa, he probado de la manera que me indicas y me funciona a la perfección. Pero mi duda ahora es la siguiente: ¿como puedo controlar si tengo que abrir la ventana padre o no?.
Me explico, si en la ventana "passord" se pulsa "Esc" o si cerramos la ventana sin introducir datos no se deberia de abri el Formulario padre.
Luego otra duda que me surge, es ¿donde declaro las variables para que me sirvan para todos los furmularios?
Responder Con Cita
  #9  
Antiguo 03-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Thoma.

Cita:
¿como puedo controlar si tengo que abrir la ventana padre o no?.
Podes aprovechar a TModalResult que representa el valor que devuelve una ventana modal y hacer algo como:
Código Delphi [-]
uses Forms, 
     Controls,
     ....
begin
  Application.Initialize;
  Application.CreateForm(TfrmMain, frmMain);
  Application.ShowMainForm:= False;
  with TfrmPassword.Create(nil) do
  try
    if ShowModal = mrOk then
    begin
      Application.ShowMainForm:= True;
      Application.Run;
    end;
  finally
    Free;
  end;
end.
Por ejemplo devolver mrOk solo sí ingresa correctamente el usuario y contraseña. Revisá todos los valores que puede tomar TModalResult en la ayuda de Delphi.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-06-2011 a las 17:07:31.
Responder Con Cita
  #10  
Antiguo 13-06-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
a ver... no sé porque me ocurre lo siguiente. Si pulso la tecla "Enter" en cualquier edit, automáticamente me abre el form Padre sin pasar por el siguiente edit, pero si pulso la tecla "Tab" si toma el foco el siguiente edit. De hecho con el "enter" no pasa ni por el "onExit"
¿?
con lo cual no puedo controlar el ModalResult.
Responder Con Cita
  #11  
Antiguo 13-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Thoma.

¿ Tenés asignado algún código en los eventos OnKeyPress u OnKeyDown de los Edits o el Form ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 13-06-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
He probado con esto,
Código Delphi [-]
procedure TPasswordDlg.edtUsuarioKeyPress(Sender: TObject; var Key: Char);
begin
  if Key=#13 then edtPassword.SetFocus;

end;
pero ya te digo no pasa ni por keyPress
Responder Con Cita
  #13  
Antiguo 13-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Thoma.

Si estas usando TBitBtns para aceptar y cancelar, poné el valor False en su propiedad Default.

Debido a que esta propiedad determina si el manejador del evento OnClick del TBitBtn se activa o no al presionar la tecla enter

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 13-06-2011
Avatar de Thoma
Thoma Thoma is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 46
Poder: 0
Thoma Va por buen camino
Gracias edfica, tu ayuda me ha servido de mucho.
un saludo.
Responder Con Cita
  #15  
Antiguo 14-10-2011
Avatar de Diego827
Diego827 Diego827 is offline
Miembro
NULL
 
Registrado: oct 2010
Posts: 157
Poder: 14
Diego827 Va por buen camino
Exacto!

Cita:
Empezado por ecfisa Ver Mensaje
Hola Thoma.

Revisá este [ enlace ], ahí se explica lo que te está sucediendo.

Saludos.
Estimado ecfisa; tienes toda la razón. Tengo un formulario padre y me error al llamar al hijo. Y si en definitiva debe ser el form principal el formulario padre.

Saludos,
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
llamar al evento click de un boton q se encuentra en un form desde otro form TURBOIGOR OOP 6 02-12-2008 14:50:16
Como llamar form desde otros form y regresar a la linea que se estaba ejecutando Willy Rodrigo C++ Builder 1 03-08-2007 19:36:23
Proyecto MDI, error al crear form hija nfrfabian Varios 22 04-07-2007 01:29:47
Error al llamar un form en ShowModal DarkByte OOP 4 28-12-2005 09:16:12
Error de memoria al llamar otra form dmagui Conexión con bases de datos 18 26-09-2005 22:43:27


La franja horaria es GMT +2. Ahora son las 13:03:52.


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
Copyright 1996-2007 Club Delphi