Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Anular la tecla ESC (https://www.clubdelphi.com/foros/showthread.php?t=67399)

ingel 15-04-2010 14:14:55

Anular la tecla ESC
 
Hola a todos .. perdon si el tema ya fue referenciado . .pero tengo problemas con la busqueda ( no puedo buscar por mas de una palabra porque me lo toma todo como una unica expresion y me trae 11 paginas de resultados.. viejo hilo nunca resuelto :) ) y no logro encontrar nada de lo que busco..

Lo que quiero lograr es eso .. que el usuario no logre salir del form presionando ESC .. Tengo un componente KeysOnFoms que tiene una propiedad CloseOnEscape (false por defecto..) pero en true o false .. el ESC
me saca igualmente del form.. quizas lo este utilizando mal .. o ... :confused:

Alguna otra opcion ?
sds y gracias

Caro 15-04-2010 15:51:25

Hola ingel, al presionar la tecla ESC no te cierra el formulario a no ser que tu lo hayas programado así. Para anular la tecla ESC debes colocar la propiedad KeyPreview del formulario a True y en el evento OnKeyPress esto:

Código Delphi [-]
 if key = #27 then
   key := #0;

Saluditos

ingel 15-04-2010 16:47:53

no me funciono
 
Hola Caro.. gracias por tu ayuda ...

Hice lo que me indicaste .. pero sigue saliendo con ESC ....

y lo raro es que no pasa nunca por el evento OnkeyPress ...

Cree un form nuevo vacio solo con un boton de salir y lo llamo desde el menu ... (por las dudas que en el que lo quiero hacer tuviera algo 'raro' seteado) e hice lo que me indicaste .. pero sale con ESC ...

Algo que NO hace desde el form del menu principal donde el form si ya tenia seteado el Keypreview en True .. pero nada en el evento onkeypress

me maree .... :confused: ...

(Las ventanas son Modales .. por si tiene algo que ver..)

Sds y gracias por tu tiempo

roman 15-04-2010 16:59:44

¿No tienes un botón en el formulario que tenga en true su propiedad Cancel?

// Saludos

ingel 15-04-2010 17:16:45

Nop Roman ..
 
En el form nuevo que cree con solamente un boton esta en False ..
y en el form que lo quiero implementar tambien todos los botones tienen el Cancel en False...

en el Main tengo este codigo para cambiar Tab x Enter ... podra afectar ??

Código:

    if Msg.Message = WM_KEYDOWN then begin
      if Msg.wParam = VK_RETURN then begin {cambio el enter por tab}
          Control_Actual:= Screen.ActiveControl;
          if (Control_actual is TDBMemo) or (Control_actual is TRxRichEdit) then exit;

          if (Control_actual is TEdit) or (Control_actual is TMaskEdit) or
                (Control_actual is TFloatEdit) or (Control_actual is TDateTimePicker) or (Control_actual is TCustomEdit)
                  or (Control_actual is TCombobox) then Msg.wParam:=VK_TAB;
      end
      else if Msg.wParam = VK_DECIMAL then Msg.wParam:=188
            else if Msg.wParam = VK_ESCAPE then TForm(Screen.ActiveForm).ModalResult:=mrcancel;{Close;}
    end;



Sds y Gracias ....

roman 15-04-2010 17:20:49

Y, ¿dónde tienes ese código? Porque claramente le estás diciendo que cierre el formulario activo con la tecla ESC:

Código Delphi [-]
else if Msg.wParam = VK_ESCAPE then TForm(Screen.ActiveForm).ModalResult:=mrcancel;{Close;}

// Saludos

rrf 15-04-2010 17:23:06

Sobre el tema de la tecla Esc no puedo aportar mucho más que lo que ya se ha comentado. Quizás preguntarte la versión de Delphi que usas...

Con relación a los problemas que tienes con las búsquedas, comentarte que en este enlace se trata el tema y se ofrecen 2 soluciones bastante buenas:

1- En Google, hacer una búsqueda así:
palabra1 palabra2 palabra3 site:www.clubdelphi.com

2- Un buscador especializado en Delphi. En este enlace.

Espero te sirva, salu2.

Ramón

Caro 15-04-2010 17:38:21

Cita:

Empezado por roman (Mensaje 360623)
Y, ¿dónde tienes ese código? Porque claramente le estás diciendo que cierre el formulario activo con la tecla ESC:


Código Delphi [-]
else if Msg.wParam = VK_ESCAPE then TForm(Screen.ActiveForm).ModalResult:=mrcancel;{Close;}






// Saludos

Opino lo mismo ;).

Ingel comenta el ultimo else y prueba de nuevo, quitando esa ultima línea no necesitas el codigo para anular el ESC para que no te cierre tu formulario.

Saluditos

ingel 15-04-2010 17:51:48

Gracias a Ambos ... GENIOS !!
 
Ese codigo no era mio .. lo herede del programador original ... y la verdad no lo habia tenido en cuenta hasta recien ... asi que muchas gracias !! ...

(Ahora reviso los link sobre la busqueda Caro .. gracias !)


La franja horaria es GMT +2. Ahora son las 07:04:45.

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