![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Una pregunta:
Releyendo tu mensaje anterior al respecto hablas de tener programadas muchas teclas en OnKeyDown, entre ellas la tecla Supr. ¿Cómo es esta programación? Lo pregunto porque normalmente para borrar el registro se requiere Ctrl-Supr y no sólo Supr de manera que no sé si en alguna parte, quizá en el formulario ancestro, esté de alguna forma interfiriendo el código. // Saludos |
#2
|
||||
|
||||
Roman, utilizar solo la tecla Supr fué una imposición. Respecto a la programación en los ancestros, todos los maestros, heredan de un formulario que a parte de otras características estéticas tiene programado el evento OnKeyPress de la siguiente manera:
Código:
procedure TPapiFRM.FormKeyPress(Sender: TObject; var Key: Char); begin begin //Pulsacion de ENTER if Key = #13 then begin if not (ActiveControl is TDBGrid) and not (ActiveControl is TButton) and not (ActiveControl is TdbMemo) and not (ActiveControl is TDBCtrlGrid) then begin {si no es un DBGrid} Key := #0;{nos comemos la pulsación del enter} Perform(WM_NEXTDLGCTL, 0, 0);{movemos al siguiente} end else begin if (ActiveControl is TDBGrid) then begin with TDBGrid(ActiveControl) do if selectedindex < (fieldcount -1) then selectedindex := selectedindex +1 else selectedindex := 0; end; end; end; end; end; Gracias.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
#3
|
||||
|
||||
Volvamos al comienzo:
Cita:
Por otra parte, ¿qué pasa si pones la propiedad AllowDelete del DBCtrlGrid en false? // Saludos |
#4
|
||||
|
||||
Dentro del DBCtrlGrid existen, entre otros, componentes DBEdit. Si el usuario està posicionado en uno de ellos, cuando se teclea la tecla Supr, a parte del comportamiento programado, aplica la tecla suprimir al texto de ese componente, poniendo el registro en modo edición al verse modificado.
Si se dice "sí" al mensaje de borrado, una vez que ha borrado, afecta al registro anterior (si existe) y si se dice "no" al borrado, afecta al registro actual. Un saludo.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
#5
|
||||
|
||||
Pero entonces ¡está claro! ¿no?. Tu estás inhibiendo la tecla para el DbCtrlGrid pero no para el DbEdit.
// Saludos |
#6
|
||||
|
||||
Pero si el DBCtrlGrid es el contenedor del DBEdit y es el que tiene programado el tratamiento de la tecla, ¿no se debería poder eliminar la pulsación de la tecla tras tratarla el DBCtrlGrid, para que no le afecte a ningún componente mas?.
En caso de no poder eliminarse la pulsación, ¿que habría que programar todos los componentes susceptibles de verse modificados por la tecla Supr, para que la ignorasen?. Si es así, será un trabajo muy largo.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice |
#7
|
||||
|
||||
Si seleccionas todos los controles en los que quieres ese comportamiento a la vez y pulsas en su evento OnKeyDown y los vinculas con el mismo evento del DbCtrlGrid con esta operación lo arreglas todo.
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
![]() |
![]() |
|
|
![]() |
|