![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Gracias Roman y Marcos, lo he probado y funciona, solo ocurre que realiza dos veces el tratamiento de la tecla (una en el DBCtrlGrid y otra en el DBEdit), pero lo solucionaré con una bandera o apuntando a un procedimiento global que ignore la tecla Supr en esos componentes.
De todas maneras, ¿no os resulta curioso que no sea posible decirle al sistema que se olvide de la pulsación de una tecla de forma genérica?. Gracias de nuevo a ambos. Un saludo.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
|
#2
|
||||
|
||||
|
De forma genérica lo haría para todo el formulario entonces solamente habría que tratar el evento OnKeyDown del formulario no del DbCtrlGrid.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#3
|
||||
|
||||
|
Creo haber encontrado una posible solución:
Como ya sabemos, el código Código:
procedure TForm1.DBCtrlGrid1KeyDown(...);
begin
if (Key = VK_DELETE) then
begin
Key := 0;
end;
end;
Intenta esto: Código:
procedure TForm1.DBCtrlGrid1KeyDown(...);
begin
if (Key = VK_DELETE) then
begin
Key := 0;
abort;
end;
end;
// Saludos |
|
#4
|
|||
|
|||
|
Otra posible solución, si hacemos lo comentado por Marcos de informar el mismo método OnKeyDown para todos los controles, sería el controlar el parámetro Sender
Código:
if Sender.ClassType = TDbEdit then
// control que se quiera hacer con los TDbEdits
|
|
#5
|
||||
|
||||
|
Gracias a todos, voy a probar ambos métodos y os comentaré.
Por fin y con vuestros consejos, le veo resolución efectiva.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
|
#6
|
||||
|
||||
|
Wop!
Este método lo acabo de comprobar y funciona. De todas maneras, es una manera más de hacer lo mismo. Sabemos que podemos programar el onKeyDown/Up del Form y poniendo KeyPreview = true, podemos controlar la pulsación de la tecla en cualquier control. Lo que sucede es que solamente queremos controlar el evento en aquellos controles que estén dentro del CtrlGrid. Bien, cuando creamos un control dentro de un TDBCrtlGrid, su Parent apunta a una istancia de la clase TDBCtrlPanel, en consecuancia podríamos aplicar la siguiente tecnica: Código:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ActiveControl.Parent is TDBCtrlPanel) and (Key = VK_DELETE) then begin //tomamos las acciones que queramos Key := 0; Abort; end; end;
__________________
E pur si muove |
|
#7
|
||||
|
||||
|
Estupendo, funciona perfectamente.
Muchas gracias de nuevo a todos.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
|
#8
|
||||
|
||||
|
Cita:
// Saludos |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
|