Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   cerrar sesión en aplicación (https://www.clubdelphi.com/foros/showthread.php?t=27477)

jano 22-11-2005 10:34:42

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

Enan0 22-11-2005 11:50:22

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.

vtdeleon 22-11-2005 17:19:00

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
....
....

jano 22-11-2005 18:19:53

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... :confused:
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;


vtdeleon 22-11-2005 23:27:19

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


jano 24-11-2005 16:26:46

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....:(

Lepe 24-11-2005 17:30:25

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


La franja horaria es GMT +2. Ahora son las 17:00:38.

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