Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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-04-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Problema con pantalla de password (ventana modal)

Despues de mirame varios hilos del foro no doy con la solucion al problema, el código que uso es el siguiente en el dpr:
Código:
 //Creo la ventana modal de la contraseña
   FLogin := TFLogin.Create(Application);
   Respuesta := FLogin.ShowModal;
   if Respuesta = mrOK then
 	begin
 	  Application.CreateForm(TForm1, Form1);
 	  Application.Run;
    end;
y en el boton Ok del form de la contraseña tengo esto:
Código:
 procedure TFLogin.BOKClick(Sender: TObject);
 begin
   //comparo el nombre de usuario y la contraseña
   ModalResult := mrok;
 end;
 
 procedure TFLogin.FormClose(Sender: TObject; var Action: TCloseAction);
 begin
   If ModalResult <> mrOk Then
 	close;
 	//ModalResult := mrAbort;
 end;
El problema que tengo, es que cuando le doy al Ok (se supone que los datos son correctos y debe iniciar la aplicacion), funciona bien, pero si cierro del aspa, me salen errores, aunque cierra la aplicacion.

Como lo puedo arreglar, para que no salgan esos errores, creo que tendria que liberar o cancelar la ejecucion, pero no encuentro el procedimiento adecuado que creo que seria algo como Application.Close;
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #2  
Antiguo 29-04-2005
Avatar de hermes_32
hermes_32 hermes_32 is offline
Miembro
 
Registrado: jul 2003
Posts: 94
Poder: 21
hermes_32 Va por buen camino
Haz lo siguiente:

Código Delphi [-]
  Application.Initialize;
  Application.CreateForm(TFLogin, FLogin);
  Respuesta := FLogin.ShowModal;
  if Respuesta = mrOK then begin
    FLogin.Destroy;
    Application.CreateForm(TForm1, FForm1);
    Application.Run;
  end
  else Application.Terminate;

Un saludo.
Responder Con Cita
  #3  
Antiguo 03-05-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Sigue sin funcionar bien, a ver que es lo que pasa. Este es el código que tengo en el .dpr:
Código:
 Var
   Respuesta: Integer;
 
 begin
   Application.Initialize;
   Application.CreateForm(TDMAgenda, DMAgenda);
   Application.CreateForm(TDMHacienda, DMHacienda);
   Application.CreateForm(TForm1, Form1);
   Application.CreateForm(TFLogin, FLogin);
   Application.CreateForm(TFAgenda_MDIChild, FAgenda_MDIChild);
   //Creo la ventana modal de la contraseña
   Respuesta := FLogin.ShowModal;
   if Respuesta = mrOK then
 	begin
 	  FLogin.Destroy;
 	  Application.CreateForm(TForm1, Form1);
 	  Application.Run;
 	end
   else
 	Application.Terminate;
 end.
Y el error es una violacion de acceso de memoria, que se produce despues de ejecutar Application.Terminate; En el Formulario del Login no hago nada aun, es decir que si das al OK pongo mrOK, si das a la X pongo mrAbort.

Un saludo y gracias.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #4  
Antiguo 03-05-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Revisa la solución de Roman en este hilo.

con esto, muestras la ventana principal de tu programa y la de login.

Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #5  
Antiguo 04-05-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
He modificado el código de la siguiente forma, pero no hay manera, sigue dando el error de violavion de memoria, y ya no se que mas probar, creo que así esta bien, el error lo da al final del todo, es decir, que salta en la linea end.

Código:
 ...
 begin
   Application.Initialize;
   Application.CreateForm(TDMAgenda, DMAgenda);
   Application.CreateForm(TDMHacienda, DMHacienda);
   FLogin := TFLogin.Create(Application);
   try
 	Respuesta := FLogin.ShowModal;
 	if Respuesta = mrOK then
 	  begin
 		Application.CreateForm(TForm1, Form1);
 		Application.CreateForm(TFAgenda_MDIChild, FAgenda_MDIChild);
 		Application.Run;
 	  end
 	else
 	  Application.Terminate;
   finally
 	FLogin.Free;
 end;
 
 end.
Gracias.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #6  
Antiguo 04-05-2005
Avatar de kalimero
kalimero kalimero is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 288
Poder: 21
kalimero Va por buen camino
Hola
Comenta el FLogin.free
Saludos
Responder Con Cita
  #7  
Antiguo 04-05-2005
Avatar de Durbed
Durbed Durbed is offline
Miembro
 
Registrado: ago 2004
Posts: 166
Poder: 20
Durbed Va por buen camino
Kalimero, asi tampoco ha funcionado, pero al final lo he resuelto de una forma mejor, pues ahora si se introducen mal los datos del login, entra al programa, donde puede crearse una agenda o conectarse a una existente.

Gracias.
__________________
Intentando hacer algo con Delphi 7 y Firebird 1.5
Responder Con Cita
  #8  
Antiguo 04-05-2005
Avatar de hermes_32
hermes_32 hermes_32 is offline
Miembro
 
Registrado: jul 2003
Posts: 94
Poder: 21
hermes_32 Va por buen camino
A mi con lo que te puse me funciona perfectamente.

Cita:
Empezado por Durbed
Y el error es una violacion de acceso de memoria, que se produce despues de ejecutar Application.Terminate; En el Formulario del Login no hago nada aun, es decir que si das al OK pongo mrOK, si das a la X pongo mrAbort.
Si le das al OK -> ModalResult := mrOk
Si le das a la X -> ModalResult := mrCancel

Otro detalle, la pantalla que tu llamas Form1 no la pongas "autocreate". Es decir, en Project->Options la tienes que dejar en la lista de la derecha.

Un saludo.

Última edición por hermes_32 fecha: 04-05-2005 a las 15:25:43.
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


La franja horaria es GMT +2. Ahora son las 05:57:07.


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