FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
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; Por favor, alguna idea.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
#2
|
||||
|
||||
Cita:
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; PD: El procedimiento Include(Shift, ssCtrl) es más eficiente que la asignación Shift := Shift+[ssCtrl]; según la ayuda de Delphi. Salu2. |
#3
|
||||
|
||||
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 |
#4
|
||||
|
||||
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 |
#5
|
||||
|
||||
¿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 |
#6
|
||||
|
||||
Cita:
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 |
#7
|
||||
|
||||
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 |
#8
|
||||
|
||||
Cita:
// Saludos |
#9
|
||||
|
||||
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 |
#10
|
||||
|
||||
Roman. Funciona perfectamente. Gracias.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
|
|
|