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 07-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
Post Identificar el Tabulador

Solo quiero saber con que número ó palabra puedo referenciar el TAB, esto lo quiero por que solo valido el Enter=13 en el OnkeyDown, y ya probe esto pero no me funciono: if (key=13) or (key=VK_TAB) then
de ante mano Gracias....
Responder Con Cita
  #2  
Antiguo 07-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.275
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
Solo quiero saber con que número ó palabra puedo referenciar el TAB, esto lo quiero por que solo valido el Enter=13 en el OnkeyDown
Creo que no vas a poder hacerlo en un TEdit estandard, sino que la única forma va a ser derivando el control e intentando capturar alguno de los mensajes de tecla, ya que en los eventos de los controles estandard, cuando se lanza el evento esa tecla ya ha sido filtrada.

En cuanto a la forma de referirte a la tecla TAB esa es la correcta, sólo que en éste punto no te sirve como te he comentado antes.

Si derivas el componente TEdit puedes redefinir el mensaje

Código Delphi [-]
procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP;

y programar algo como lo que estabas haciendo tú:

Código Delphi [-]
  // comprobación
  if (Message.CharCode = VK_TAB) then begin
    MessageDlg('Se ha pulsado la tecla TAB', mtInformation, [mbOK], 0)
  end;
  // método heredado
  inherited;

verás como en éste caso sí funciona.
__________________
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 07-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
Post oki

Sr. Germán Estévez, ya probe lo que me dijo perp en donde se declará el siguiente procedimiento:
procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP;

Ya lo declare en el public de la forma, en private, me lo acepta pero me marca error "Unsatisfied Forward", por lo que añado el cuerpo de este mismo procedimiento y después me marca el error en "message WM_KEYUP;", en que estoy mal????
Responder Con Cita
  #4  
Antiguo 08-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.275
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
Bueno, como la unit es pequeña la pongo completa.
Este sería el .PAS correspondiente a un nuevo componente derivado de un Edit que detecta la punsación de la tecla TAB.

Código Delphi [-]
unit editTAB;
interface
uses
  Windows, Messages, SysUtils, Classes, Controls, StdCtrls;
type
  teditTAB = class(tedit)
  private
    { Private declarations }
    procedure WMKeyUp(var Message: TWMKeyUp); message WM_KEYUP;
  protected
    { Protected declarations }
  public
    { Public declarations }
  published
    { Published declarations }
  end;
procedure Register;
implementation
uses
  Dialogs;
procedure Register;
begin
  RegisterComponents('NoSirve', [teditTAB]);
end;
{ teditTAB }
procedure teditTAB.WMKeyUp(var Message: TWMKeyUp);
begin
  if (Message.CharCode = VK_TAB) then begin
    MessageDlg('TAB keyUp', mtInformation, [mbOK], 0)
  end;
  inherited;
end;
end.

Cosas que debes mirar:
(1) Si te fijas en el método register yo lo instalo en la paleta NoSirve, cambia ésto con el nombre de la paleta donde desees que te aparezca (Standard, Additional,...)
(2) Al redefinir el mensaje se muestra un cuadro de diálogo y psteriormente se llama a inherited (para que haga el comportamiento standard, es decir pasar al siguiente control como hace el TAB siempre).
(3) Para que sea funcional, puede instalarlo en un package existente (el de usuario) o crearte un package nuevo (File/New/Other/Package) añadirle ésta Unit e instalarlo.

Un saludo.
__________________
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
  #5  
Antiguo 08-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
Post oki

Gracias por su respuesta, lo voy a probar.....!!!!
Responder Con Cita
  #6  
Antiguo 08-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
Post ????

Entonces tendría que hacerlo por cada componente que tengo, lo que pasa es que mezclo los BdEdit, Edit, ComboBox y ListBox, No es posible Cachar el TAB de otra forma, es decir que cualquier componente sin necesidad de crear nuevos componentes ó bien de los mismos que uso, modificarlos, agregandoles el código que me proporcionó usted????
Responder Con Cita
  #7  
Antiguo 09-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.275
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
Si lo quieres hacer con todos (eso no lo habías dicho antes... ) creo que entonces habría que apuntar al formulario; Supongo que si pruebas con la propiedad KeyPreview del Form no funcionará (pruébalo por si acaso); Habría que intentar hacer algo similar en el form. Si la cosa no funciona como último caso siempre tienes derivar los 4 o 5 componentes que utilizas de la misma forma que se ha hecho con el Edit (de todas formas verás que nos es mucho trabajom, ya que sólo tiene unas pocas líneas).
__________________
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
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 17:41:02.


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