Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cerrar aplicación después de transcurrir cierto tiempo (https://www.clubdelphi.com/foros/showthread.php?t=89994)

MRS@N 15-03-2016 17:45:56

Cerrar aplicación después de transcurrir cierto tiempo
 
Buenas amigos, tengo una inquietud, estoy realizando un aplicación para el control de ordenes de un labor, tengo varias ventana, usuario: es la ventana de ingresar al sistema introduciendo usuario y contraseña, de allí pasa a la ventana principal y de esta principal recorre varias ventanas según sea su caso.

Mi pregunta es la siguiente, necesito saber como hacer para cuando transcurra cierto tiempo sin usar la aplicación todas las ventanas se cierran y solo quedaría abierta la de usuario donde se ingresa de nuevo usuario y clave. AYUDA !!!!!!!!!!!!!!

Perdon estoy utilizando Delphi XE6

ElKurgan 16-03-2016 11:49:33

Hombre, cerrar todas las ventanas es más o menos fácil si trabajas en windows. Podrías crear una lista con tantas ventanas como tengas abiertas.
Para cerrarlas bastaría con llamar a una función como esta (más o menos, hablo de cabeza):

Código Delphi [-]
procedure CierraVentanas(aVentanas: TstringList);
var
  i: Integer;
  Wnd: HWnd;
  pVentana: PChar;
begin
  for i := 0 To aVentanas.Count - 1 do 
  begin
    pVentana := PChar(aVentanas[i]);
    Wnd := FindWindow(nil, pVentana);            // Mira si existe la ventana
    if Wnd <> 0 then
    begin
      SendMessage(Wnd, WM_CLOSE, 0, 0);        // Envía el mensaje de cierre a Windows
    end;
  end;
end;
Otra cosa es lo de volver a llamar al login. Eso habrá que verlo con más cuidado, ya que el método propuesto arriba, si cierra la ventana principal normalmente se cierra la aplicación.

Pero como idea de partida creo que puede valer

Saludos

Neftali [Germán.Estévez] 18-03-2016 11:06:38

Cita:

Empezado por MRS@N (Mensaje 503366)
Mi pregunta es la siguiente, necesito saber como hacer para cuando transcurra cierto tiempo sin usar la aplicación todas las ventanas se cierran y solo quedaría abierta la de usuario donde se ingresa de nuevo usuario y clave. AYUDA !!!!!!!!!!!!!!

Si buscas por "inactividad sistema" encontrarás varios procedimientos programados en Delphi para detectar tiempo en que no se ha "utilizado" el equipo.
Una vez alcanzado un determinado periodo de tiempo puedes cerrar formularios o abrir el de Login si es necesario.

Revisa este link, o este otro, por ejemplo.

Lepe 18-03-2016 20:12:55

Las ventanas abiertas en tu aplicación, ya están en la lista Screen.Forms, Screen.Datamodules, etc.

Por supuesto para cerrarlas, recorre el bucle a la inversa, o tendrás access violation...
Código Delphi [-]
for I:= Screen.FormCount-1 downto 0 do Screen.Forms[i].Free;


La franja horaria es GMT +2. Ahora son las 12:47:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi