Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-03-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 24
javiermorales Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 25-03-2004
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
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:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 25-03-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
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;
no inhibe el evento OnKeyDown de un DBEdit contenido.

Intenta esto:

Código:
procedure TForm1.DBCtrlGrid1KeyDown(...);
begin
  if (Key = VK_DELETE)  then
    begin
      Key := 0;
      abort;
    end;
end;
abort interrumpe cualquier procesamiento posterior. Ya lo probé y sí funciona. No obstante desconozco si pueda generar algún efecto secundario.

// Saludos
Responder Con Cita
  #4  
Antiguo 25-03-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 27
__cadetill Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 26-03-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 24
javiermorales Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 26-03-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 24
marto Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 26-03-2004
Avatar de javiermorales
javiermorales javiermorales is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 272
Poder: 24
javiermorales Va por buen camino
Estupendo, funciona perfectamente.

Muchas gracias de nuevo a todos.
__________________
Se hace lo que se puede que siempre es menos de lo que se dice
Responder Con Cita
  #8  
Antiguo 26-03-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 marto
Código:
if (ActiveControl.Parent is TDBCtrlPanel) and (Key = VK_DELETE) then
Yo me fijaría también en que ActiveControl no sea nil.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 23:00:32.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi