Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Cachar Tabulador

Como cachar el Tabulador al momento de presionarlo, en un Edit, bdEdit, MaskEdit y dbGrid????

Ya había lanzado esta pregunta, pero en donde me explicaron tengo que crear un Componente Nuevo por cada uno de los que necesito, aparte cuando lo instalo no me explican como cacharlo, solo me explican donde se cachan al momento de heredar los controles de un Edit y enviar un mensaje, por lo que ya le busque en que propiedad pudiera cacharlo pero no lo encuentro.
Cualquier ayuda se los agradezco mucho.
Responder Con Cita
  #2  
Antiguo 14-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.329
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por AGAG4
Como cachar el Tabulador al momento de presionarlo, en un Edit, bdEdit, MaskEdit y dbGrid????
Hagamos borrón y cuenta nueva...

A ver si ésto te sirve mejor.
En el form donde tienes los controles, define en la parte privada ésto:
Código Delphi [-]
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;

Y en la implementación ésto:

Código Delphi [-]
procedure TForm1.CMDialogKey(var Message: TCMDialogKey);
begin
  // Comprobar estado
  if GetKeyState(VK_MENU) >= 0 then begin
    with Message do begin
      // Segun la tecla
      case CharCode of
        VK_TAB:
          // Hacer lo que quieres
          ....
          MessageDlg('Tecla TAB, Control activo: '+  ActiveControl.Name, mtInformation, [mbOK], 0);
      end; // end..case
    end; // end..with
  end; // end..if
  // Método padre para que salte al siguiente control,...
  inherited;
end;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 14-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
oki

Voy hacer pruebas Sr. Neftali.. Gracias....!!!!
Responder Con Cita
  #4  
Antiguo 14-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
oki

Sr. Neftali, si me funcionó, pero, como mando llamar un Evento dentro del procedimiento para cachar el TAB????, ó bien llamar sólo el evento ONKEYDOWN al presionar el TAB dentro del mismo Procedimiento.
Responder Con Cita
  #5  
Antiguo 15-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.329
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
La rutina de un evento no deja de ser un procedimiento más, así que puedes llamarlo como cualquier otro (nombre del evento y parámetros).
¿Es eso a lo que te refieres? o tal vez no he entendido la pregunta.

Código Delphi [-]
  // ejemplillos...
  Edit1.EditClick(Self);
  Form1.FormShow(Self);

El ejemplo concreto para llamar al KeyDown sería así:

Código Delphi [-]
var
  _key: Word;
begin
  _key := VK_TAB;
  Self.OnKeyDown(Self, _key, []);
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #6  
Antiguo 15-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
oki

Ya lo probe Sr. Neftali, llamó al evento asi como me comenta arriba, y me marca un error al pasar por esta línea>
Código:
Self.OnKeyDown(Self, _key, []);
El Error:
"Project PFAC.exe raised exception class EAccessViolation with message 'Acess Violation at adress 0000' "
Responder Con Cita
  #7  
Antiguo 15-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
oki

Ya me funciono, lo que paso es que no le puse bien el nombre del OnkeyDown y aparte daba doble salto cuando presionaba el TAB, por lo que le quite esta instrucción > inherited; y me funcionó perfectamente, una última pregunta cual es la función de esa instrucción????
Responder Con Cita
  #8  
Antiguo 15-09-2004
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.329
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por AGAG4
...y aparte daba doble salto cuando presionaba el TAB
Es normal, un salto te lo hace el inherited, y otro salto te lo hace el llamar al evento OnKeyDown con el TAB .

Cita:
Empezado por AGAG4
...por lo que le quite esta instrucción > inherited; y me funcionó perfectamente
Creo que deberías quitar la otra en lugar de la del inherited.

Cita:
Empezado por AGAG4
una última pregunta cual es la función de esa instrucción????
Para entender la función de ésta instrucción hay que entender primero lo que hemos hecho.
Al redefinir el método CMDialogKey lo que hacemos es decirle a Delphi que ejecute "nuestro código" en lugar del código que tenía programado. Eso es peligroso, porque el componente deja de hacer cosas que tenía programadas. Lo correcto es que podamos decirle que antes o después de lo que el componente tenía programado se ejecute lo nuestro. Para ello utilizamos la instrucción inherited.

Cuando ponemos:
Código Delphi [-]
inherited;
// nuestro código
...

le estamos diciendo que primero haga lo que ya hacía antes y luego haga lo que nosotros queremos. La otra opción es hacerlo en orden contrario o intercalado entre nuestro código:

Código Delphi [-]
// parte de nuestro código
...
inherited;
// sigue nuestro código
...

Es importante que no quitemos el inherited a no ser que estemos seguros de que lo que hacía el componente antes no nos interesa en otro caso no se debe eliminar.

Espero haberme explicado decentemente
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #9  
Antiguo 15-09-2004
Avatar de AGAG4
AGAG4 AGAG4 is offline
Miembro
 
Registrado: ago 2004
Ubicación: Los Mochis, Sinaloa, México
Posts: 1.420
Poder: 21
AGAG4 Va por buen camino
Gracias

Muchas Gracias Sr. Neftali, le debo otra, me funcionó Perfectamente.
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 04:08:52.


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