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 07-03-2004
Avatar de Gelmin
Gelmin Gelmin is offline
Miembro
 
Registrado: may 2003
Ubicación: Chinandega-Nicaragua
Posts: 56
Poder: 21
Gelmin Va por buen camino
Talking Evitar solamente Alt+f4 en mi aplicacion

Que tal amigos gracias por la ayuda que brindan a través de los foros...mi pregunta es esta necesito evitar que cuando la ventana de mi aplicacion este activa no se pueda cerrar con Alt+f4 ya busque en los foros sobre esto y sale como hacerlo el problema es que me dicen que haga lo sig:
en el evento de la form OnCloseQuery asignar a la variable CanClose:=false ya probe y funciona pero no me sirve porque mi aplicacion necesito que se cierre cuando se cierre la sesion de Win, y con ese codigo no me deja ni cerrar la sesion de windows porque claro hay un programa que le esta diciendo a Win que no se puede cerrar....ahora yo lo que necesito es que solamente cuando mi aplicacion este activa pues que se bloquee el Alt+f4 para que el usuario no pueda cerrarla y solamente se cierre cuando Win finalice Sesion. Gracias de antemano...un saludo Gelmin Martinez (Nicaragua)
__________________
Powered by Gel
Responder Con Cita
  #2  
Antiguo 07-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Mírate el la web de Román o en mi web la unit Hooks. Seguramente te servirá
Responder Con Cita
  #3  
Antiguo 07-03-2004
Avatar de Gelmin
Gelmin Gelmin is offline
Miembro
 
Registrado: may 2003
Ubicación: Chinandega-Nicaragua
Posts: 56
Poder: 21
Gelmin Va por buen camino
Wink Esta muy bueno lo de la unit Hooks pero...!

Gracias amigos ya probe lo de la units Hooks esta muy bueno me parece bastante facil y util pero mi aplicacion estara activa durante todo la sesion del usuario por lo tanto con esa unit bloqueo el alt+f4 y no me sirve para niguna otra aplicacion mientras la mia este abierta como puedo hacer para que el gancho se de en el momento en que se active la ventana principal de mi aplicacion y solamente en ese momento que el alt+f4 este bloqueado una ves que mi app pasa a segundo plano o que se desactive la ventana principal que se vuelva a habilitar el alt+f4 para poder utilizarlo con otras aplicaciones... cualquier comentario es bienvenido un saludo Gelmin Martinez(Nicaragua)
__________________
Powered by Gel
Responder Con Cita
  #4  
Antiguo 08-03-2004
nahuel nahuel is offline
Registrado
 
Registrado: ene 2004
Posts: 6
Poder: 0
nahuel Va por buen camino
quizas lo que conteste no tenga nada que ver con lo que necesitas pero probastes con el evento OnActivate de los forms?
Responder Con Cita
  #5  
Antiguo 09-03-2004
Avatar de Gelmin
Gelmin Gelmin is offline
Miembro
 
Registrado: may 2003
Ubicación: Chinandega-Nicaragua
Posts: 56
Poder: 21
Gelmin Va por buen camino
Talking ya probe con el OnActive del form

Si men, se me olvido decir que ya habia probado con el OnActive del form y tampoco me funciona...!
__________________
Powered by Gel
Responder Con Cita
  #6  
Antiguo 09-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Gelmin
en el evento de la form OnCloseQuery asignar a la variable CanClose:=false ya probe y funciona pero no me sirve porque mi aplicacion necesito que se cierre cuando se cierre la sesion de Win, y con ese codigo no me deja ni cerrar la sesion de windows porque claro hay un programa que le esta diciendo a Win que no se puede cerrar
Esta cuestión se relaciona con lo que anteriormente te expliqué en el mensaje Guardar antes de que mi aplicacion se cierre y lo diré de nuevo:

Por lo que a mi juicio es un error de diseño, Delphi no distingue si una ventana se cierra por métodos cómo Alt-F4, botón de cruz, método Close, etc. o porque se termina la sesión de Windows. Todo porque al recibir el mensaje WM_QUERYENDSESSION se limita a llamar al evento CloseQuery sin pasarle a éste algún parámetro que indique la forma en que se intenta cerrar la sesión.

La solución es redefinir el manejador del mensaje WM_QUERYENDSESSION y ahí fijar alguna bandera que indique por qué se está cerrando la sesión:

Código:
EndSession := true;
de manera que en el evento OnCloseQuery puedas actuar según el valor de dicha bandera:

Código:
CanClose := EndSession
// Saludos
Responder Con Cita
  #7  
Antiguo 10-03-2004
Avatar de yusnerqui
yusnerqui yusnerqui is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuba
Posts: 679
Poder: 21
yusnerqui Va por buen camino
Lightbulb Prueba esto

No estoy seguro que sea esto lo que quieres pero prueba esto en el evento on close

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Application.Active then
Action:= caNone
else
Action := caFree;
end;

yo creo que pincha
Responder Con Cita
  #8  
Antiguo 25-01-2013
Avatar de dblx
dblx dblx is offline
Miembro
 
Registrado: abr 2006
Posts: 28
Poder: 0
dblx Va por buen camino
Talking A quien tenga la misma situación

Saludos delphiadictos...

Comenzaré mi respuesta diciendo que la respuesta esta un poco atrasada pero nunca es tarde para que alguien mas pueda resolver este detalle, yo lo resolví de la siguiente manera en el evento OnKeyDown del formulario, con la propiedad KeyPreview del form en True

Código Delphi [-]
KeyPreview := True

Código Delphi [-]
procedure TF_Config.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if (Key = 18) or (Key = 115) then Key := 0;
  if Key = 27 then ModalResult := mrCancel;
end;

Asi evito que el form sea cerrado por la combinación ALT + F4 y cierre tanto por la X, si la ventana la tiene y por la tecla Escape
Responder Con Cita
  #9  
Antiguo 13-09-2013
sowei sowei is offline
Miembro
 
Registrado: abr 2010
Posts: 21
Poder: 0
sowei Va por buen camino
Quizá mejor esto no ?

Código Delphi [-]
    if ((ssAlt in Shift) and (Key = VK_F4)) then Key := 0;

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


La franja horaria es GMT +2. Ahora son las 11:07:59.


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