Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-09-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Tecla Suprimir

Hola a todos/as. En un form tengo un DBCtrlGrid y tengo en el evento OnKeyDown el siguiente código:
Código:
procedure TObras.DBCtrlGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  //Pulsacion de Borrar Registro (Suprimir)
  if (Key=VK_DELETE) then
  begin
    DBCtrlGrid1.DoKey(gkNull);
    Key := 0;
    if not (DataSource2.State in [dsInsert,dsEdit]) and not (DataSource2.DataSet.Eof) then
      if (Application.MessageBox('¿Seguro que desea borrar el registro?',
      'Sistema de Gestión de Constructoras',mb_yesno+mb_IconInformation)=idyes) then
      begin
        DataSource2.DataSet.Delete;
        DataSource2.DataSet.Refresh;
        DBEdit8.SetFocus;
      end;
    Exit;
  end;
end;
El problema está en que además ejecuta la funcionalidad normal de la tecla Suprimir, aunque como veis no tengo "inherited" y a la tecla le asigno el valor 0.

Por favor, alguna idea.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #2  
Antiguo 16-09-2004
Avatar de defcon1_es
defcon1_es defcon1_es is offline
Miembro
 
Registrado: mar 2004
Ubicación: Cuenca - España
Posts: 533
Poder: 21
defcon1_es Va por buen camino
Cita:
Empezado por javiermorales
El problema está en que además ejecuta la funcionalidad normal de la tecla Suprimir,
aunque como veis no tengo "inherited" y a la tecla le asigno el valor 0.
Hola,
aunque no tengas puesto "inherited",
si se ejecuta el código heredado (si no fuera así, pobres de nosotros ,
no funcionaría la herencia!!)

Pero, viendo el código fuente del tDBCtrlGrid en la VCL:
Código:
VK_DELETE: if GetKeyState(VK_CONTROL) < 0 then GridKey := gkDelete;
se me ocurre un truco, pon esta línea en tu código: Shift := Shift+[ssCtrl];

PD: El procedimiento Include(Shift, ssCtrl) es más eficiente
que la asignación Shift := Shift+[ssCtrl]; según la ayuda de Delphi.

Salu2.
Responder Con Cita
  #3  
Antiguo 16-09-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Gracias por la ayuda defcon1_es. Lo pruebo esta tarde y te comento.

Un saludo.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #4  
Antiguo 16-09-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Hola defcon1_es, lo he probado y continua haciendo lo mismo.

En realidad la asignación que me propones evitaría la ejecución, pero la asignación de Key a cero o a VK_NONAME también debería evitar la ejecución y no lo hace.

Si se te ocurre cualquier otra cosa, por favor, házmelo saber.

PD: Se acepta cualquier sugerencia.

Gracias.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #5  
Antiguo 20-09-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
¿No hay forma de evitar que se ejecute la funcionalidad de la tecla "suprimir"?.

De verdad que no me lo creo. Algo debe haber.

Por favor, cualquier ides será bien recibida.

PD: Utilizar la tecla "suprimir" para borrar un registro es un requerimiento del usuario que no puedo evitar.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #6  
Antiguo 20-09-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 javiermorales
El problema está en que además ejecuta la funcionalidad normal de la tecla Suprimir

Me gustaría saber cuál es esa funcionalidad normal de la que hablas pues yo coloco un DbCtrlGrid, oprimo "Suprimir" y no pasa nada. Claro está que si el foco está en un control editable como un DBEdit entonces la tecla seguirá suprimiendo el caracter bajo el cursor pero esto no lo puedes evitar con el mismo OnKeyDown del DBCtrlGrid sino con el del correpondiente DBEdit.

// Saludos
Responder Con Cita
  #7  
Antiguo 20-09-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Gracias por responder. Efectivamente el problema aparece si nos encontramos dentro de un control editable.

Pero si la solución está en el control editable, ¿como puedo, de manera genérica, desactivar la funcionalidad de la tecla "suprimir" en todos los controles editables del DBCtrlGrid?.

Gracias. Un saludo.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #8  
Antiguo 20-09-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 javiermorales
Pero si la solución está en el control editable, ¿como puedo, de manera genérica, desactivar la funcionalidad de la tecla "suprimir" en todos los controles editables del DBCtrlGrid?.
Pues una opción rápida sería asignar un mismo evento OnKeyDown a todos estos controles y anular ahí la tecla VK_DELETE. Desde luego no está de más que preguntes a tu cliente de qué forma espera que sus capturistas puedan borrar caracteres mientras escriben datos en uno de esos controles. (Quizá no esté al tanto que puede borrar el registro con Ctrl-Suprimir)

// Saludos
Responder Con Cita
  #9  
Antiguo 20-09-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Muchas Gracias Roman. Haré la asignación que me indicas y te contaré como ha ido.

Respecto a la utilización de ctrl+suprimir, se lo comenté, pero es mas caprichoso que un "metrosexual" en un centro comercial. Se ha emperrado en que sea solo con la tecla "suprimir" y punto.

En fin paciencia con los clientes, que al fin son los que pagan.

Gracias de nuevo. Te contaré.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #10  
Antiguo 20-09-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 21
javiermorales Va por buen camino
Roman. Funciona perfectamente. Gracias.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
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 16:12:47.


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