Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-11-2005
jano jano is offline
Registrado
 
Registrado: nov 2005
Posts: 8
Poder: 0
jano Va por buen camino
Question cerrar sesión en aplicación

Hola, lo que deseo hacer es poder cerrar sesion en mi aplicacion para que me vuelva a pedir la ventana de logueo, el codigo que utilizo para mostrar la ventana de usuario y contraseña es este

Application.Initialize;
Application.CreateForm(TmoduloDatos, moduloDatos);
frmInicio:=TfrmInicio.Create(nil);
if frmInicio.ShowModal = mrok then
begin
Application.CreateForm(TfmPrincipal, fmPrincipal);
Application.Run;
end
else
Application.Terminate;

Gracias por vuestro tiempo y atención
Responder Con Cita
  #2  
Antiguo 22-11-2005
Avatar de Enan0
Enan0 Enan0 is offline
Miembro
 
Registrado: may 2004
Ubicación: Argentina
Posts: 565
Poder: 20
Enan0 Va por buen camino
Código Delphi [-]
   
    Application.Initialize;
    Application.CreateForm(TmoduloDatos, moduloDatos);
    frmInicio:=TfrmInicio.Create(nil);
    if frmInicio.ShowModal = mrok then
     begin
         Application.CreateForm(TfmPrincipal, fmPrincipal);
         Application.Run;
     end
     else
       Application.Terminate;
   

Mira no veo bien cual es el form que tiene el logue, pero lo que podes haces es un timer, enlazado al evento Onmousemove.. (creo que esasi) que se active cuando el mouse deja de moverse.. (es decir, lo dejas activo siempre pero pones un variable global que haga de control) despues de N veces que no se puso a cero, cuando pasa por el evento Ontime. mostras nuevamente el formulario de logueo..

Mas o menos como esto:
Código Delphi [-]
 var
   Form1: TForm1;
   vTimer:integer;
 implementation
 
 {$R *.dfm}
 
 procedure TForm1.FormCreate(Sender: TObject);
 begin
 vTimer:=0;
 Timer1.Enabled :=false;
 Timer1.Interval:=60000;//un minuto
 Timer1.Enabled :=true;
 end;
 
 procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
   Y: Integer);
 begin
   vTimer:=0;
 end;
 
 procedure TForm1.Timer1Timer(Sender: TObject);
 begin
 If vTimer=> 5 then
   ShowMessage('Debes reloguearte')
 else
   inc(vTimer);
 
 end;
 
 end.

Última edición por Enan0 fecha: 22-11-2005 a las 12:56:24.
Responder Con Cita
  #3  
Antiguo 22-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos

Este codigo
Código Delphi [-]
 Application.Initialize;
Application.CreateForm(TmoduloDatos, moduloDatos);
frmInicio:=TfrmInicio.Create(nil);
if frmInicio.ShowModal = mrok then
begin
Application.CreateForm(TfmPrincipal, fmPrincipal);
Application.Run;
end
else
Application.Terminate;
ya no te servira de mucho.
Has un codigo que haga:
1) Oculte la ventana principal
2) Muestre la pantalla de acceso:
Acepta: 2.1) Muestra el Formulario Principal
Cancelar:2.2) Cierra la aplicacion completa
....
....
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #4  
Antiguo 22-11-2005
jano jano is offline
Registrado
 
Registrado: nov 2005
Posts: 8
Poder: 0
jano Va por buen camino
Question Es una aplicacion con MDI

frmInicio --> es el formulario de logueo
fmPrincipal --> es el formulario principal MDI

Ahora mi problema es que si solo oculto el formulario fmPrincipal y este tiene abiertos forms MDIChild, la siguiente vez que lo muestro dichas ventanas siguen ahi. De todos modos preferiria crear nuevamente ese form, en vez de solo ocultarlo.

Probe con este código, pero se queda en un bucle infinito...
la variable Finalizar la cambio a true desde el evento OnClose de fmPrincipal
Código:
   Finalizar:=false;
   while not Finalizar do
   begin
 	frmInicio:=TfrmInicio.Create(nil);
 	if frmInicio.ShowModal = mrok then
 	begin
 		Application.CreateForm(TfmPrincipal, fmPrincipal);
 		Application.Run;
 		fmPrincipal.Free;
 	end;
 	frmInicio.Free;
   end;
   Application.Terminate;
Responder Con Cita
  #5  
Antiguo 23-11-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 23
vtdeleon Va por buen camino
Saludos
Si el problema es los formularios hijos puedes hacer esto antes del paso 1:
0) Cerrar todas las ventanas hijas activas
Código Delphi [-]
var
  n:integer;
Begin
  for n:= frmprincipal.MDIChildCount-1 downto 0 do
       frmprincipal.MDIChildren[n].Free;
Cita:
Empezado por Mi
Has un codigo que haga:
1) Oculte la ventana principal
2) Muestre la pantalla de acceso:
Acepta: 2.1) Muestra el Formulario Principal
Cancelar:2.2) Cierra la aplicacion completa
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #6  
Antiguo 24-11-2005
jano jano is offline
Registrado
 
Registrado: nov 2005
Posts: 8
Poder: 0
jano Va por buen camino
quiero que se muestre el form de logueo nuevamente

Gracias por las respuestas, pero lo que necesito es que se vuelva a mostrar la ventana de logueo y q la ventana principal se destruya, ahora no tengo idea de como hacer el codigo para eso, lo intente pero se queda en el bucle....
Responder Con Cita
  #7  
Antiguo 24-11-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Si la ventana principal es la MDI, cuando se destruye, se cierra la aplicación, y este efecto no puede cambiarse.

Si pones como ventana principal la de logueo, entonces jamás puedes destruir esa ventana, solo podrás ocultarla, y estará siempre en memoria.

Lo que yo haría es lo siguiente:
- Ventana principal la MDI.
- Cuando se muestre la de logueo:
  • Cierras las ventanas hijas que haya (cancelando los cambios si los hay).
  • Pones invisibles los botones del Toolbar que sean "sensibles" y dejas visibles los menús común a todos los usuarios.
- Haces un ShowModal de la ventana de logueo.
- Si cancela la ventana de logueo: Application.Terminate y corriendo que están levantando tabiques . Si aceptan la ventana de logueo, según el nuevo ususario, muestras los botones de la barra de herramientas y menús que sean oportunos.

saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 07:51:33.


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