In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Detección de teclas pulsadas sobre TDBBrowse

Foro público de Xailer en español
Responder
Jaime Irurzun
Mensajes: 67
Registrado: Mar Nov 02, 2004 6:23 pm

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por Jaime Irurzun »

Hola,
Estoy tratando de lanzar los métodos de Alta, Baja y Modificación
capturando los eventos de la pulsación de las teclas Ins, Del y Return
respectivamente. He codificado un método en el evento OnKeyDown del
TDBBrowse, pero únicamente funciona la pulsación de la tecla Return:
METHOD DBBrowseKeyDown( oSender, nKey, nFlags ) CLASS TFormCentros
switch nKey
case K_RETURN
::Edit()
exit
case K_DEL
::Del()
exit
case K_INS
::Add()
exit
end switch
RETURN Nil
Como no encontraba las constantes en Xailer.ch he añadido el #include
"Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal?
No hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y
perdonad si es fallo mí­o.
--
Un saludo,
Jaime Irurzun.
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por jfgimenez »

Jaime,
> Como no encontraba las constantes en Xailer.ch he añadido el #include
> "Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal? No
> hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y perdonad
> si es fallo mío.
Las constantes que has usado sólo sirven para el modo consola, no GUI. Las
constantes de las teclas para windows están en xailerincludewinuser.api,
y todas empiezan por VK_. En este caso deberías usar VK_RETURN, VK_DELETE y
VK_INSERT
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Jaime Irurzun
Mensajes: 67
Registrado: Mar Nov 02, 2004 6:23 pm

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por Jaime Irurzun »

Perfecto, era eso. Mil gracias...
--
Un saludo,
Jaime Irurzun.
Jose F. Gimenez escribió:
> Jaime,
>
>
>>Como no encontraba las constantes en Xailer.ch he añadido el #include
>>"Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal? No
>>hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y perdonad
>>si es fallo mí­o.
>
>
> Las constantes que has usado sólo sirven para el modo consola, no GUI. Las
> constantes de las teclas para windows están en xailerincludewinuser.api,
> y todas empiezan por VK_. En este caso deberí­as usar VK_RETURN, VK_DELETE y
> VK_INSERT
>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por Xevi »

Ya que se habre hilo usando la extensión SWITCH...END
Vimos en Madrid, cuando podemos utilizar el SWICHT... pero no me quedó claro
porqué???
Alguna explicación sobre ventajas a utilizar SWITCH frente a DO CASE o
IF...ELSE
¿Cual es más rápido a evaluar???
Un Saludo,
Xevi.
"Jaime Irurzun" <jaime.irurzun@gmail.com> escribió en el mensaje
news:438cb0c6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Hola,
>
> Estoy tratando de lanzar los métodos de Alta, Baja y Modificación
> capturando los eventos de la pulsación de las teclas Ins, Del y Return
> respectivamente. He codificado un método en el evento OnKeyDown del
> TDBBrowse, pero únicamente funciona la pulsación de la tecla Return:
>
> METHOD DBBrowseKeyDown( oSender, nKey, nFlags ) CLASS TFormCentros
>
> switch nKey
> case K_RETURN
> ::Edit()
> exit
> case K_DEL
> ::Del()
> exit
> case K_INS
> ::Add()
> exit
> end switch
>
> RETURN Nil
>
> Como no encontraba las constantes en Xailer.ch he añadido el #include
> "Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal? No
> hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y perdonad
> si es fallo mío.
>
> --
> Un saludo,
> Jaime Irurzun.
>
CapelSoft
Mensajes: 137
Registrado: Vie Jul 29, 2005 8:49 am
Ubicación: Valencia - España
Contactar:

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por CapelSoft »

Xevi,
Pongamos por caso:
Hay que comprobar que un parámetro pueda ser A, C, X, Y, H,T donde A,C y
H tienen el mismo código.
Con DO CASE
DO CASE
CASE uParam == "A" .OR. uParam == "C" .OR. uParam == "H"
....
....
....
CASE uParam == "X"
....
CASE uParam == "Y"
....
CASE uParam == "T"
....
OTHERWISE
....
ENDCASE
Con SWITCH
SWITCH uParam
CASE "A"
CASE "C"
CASE "H"
....
EXIT // Importante!!!!
CASE "X"
...
EXIT
CASE "Y"
...
EXIT
CASE "T"
...
EXIT
DEFAULT
...
END
Saludos,
José Luis Capel
Xevi escribió:
>
> Ya que se habre hilo usando la extensión SWITCH...END
>
> Vimos en Madrid, cuando podemos utilizar el SWICHT... pero no me quedó claro
> porqué???
> Alguna explicación sobre ventajas a utilizar SWITCH frente a DO CASE o
> IF...ELSE
> ¿Cual es más rápido a evaluar???
>
>
> Un Saludo,
> Xevi.
>
>
> "Jaime Irurzun" <jaime.irurzun@gmail.com> escribió en el mensaje
> news:438cb0c6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
>>Hola,
>>
>>Estoy tratando de lanzar los métodos de Alta, Baja y Modificación
>>capturando los eventos de la pulsación de las teclas Ins, Del y Return
>>respectivamente. He codificado un método en el evento OnKeyDown del
>>TDBBrowse, pero únicamente funciona la pulsación de la tecla Return:
>>
>>METHOD DBBrowseKeyDown( oSender, nKey, nFlags ) CLASS TFormCentros
>>
>> switch nKey
>> case K_RETURN
>> ::Edit()
>> exit
>> case K_DEL
>> ::Del()
>> exit
>> case K_INS
>> ::Add()
>> exit
>> end switch
>>
>>RETURN Nil
>>
>>Como no encontraba las constantes en Xailer.ch he añadido el #include
>>"Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal? No
>>hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y perdonad
>>si es fallo mí­o.
>>
>>--
>>Un saludo,
>>Jaime Irurzun.
>>
>
>
>
>
--
José Luis Capel
http://www.CapelBlog.es
joseluis
Mensajes: 642
Registrado: Jue Sep 08, 2005 12:54 pm

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por joseluis »

Xevi,
Te sigo respondiendo.
SWITCH es más rápido de evaluar. ¿Por que? Porque solo mira constantes
que se resuelven en tiempo de compilación. Por ejemplo, esto no vale
para switch
SWITCH uParam
CASE MiFuncion() // Es una función: no lo admite switch
CASE a == b // comparaciones: no las admite
CASE MiVariable // No admite variables
END
Saludos,
José Luis Capel
Xevi escribió:
>
> Ya que se habre hilo usando la extensión SWITCH...END
>
> Vimos en Madrid, cuando podemos utilizar el SWICHT... pero no me quedó claro
> porqué???
> Alguna explicación sobre ventajas a utilizar SWITCH frente a DO CASE o
> IF...ELSE
> ¿Cual es más rápido a evaluar???
>
>
> Un Saludo,
> Xevi.
>
>
> "Jaime Irurzun" <jaime.irurzun@gmail.com> escribió en el mensaje
> news:438cb0c6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>
>>Hola,
>>
>>Estoy tratando de lanzar los métodos de Alta, Baja y Modificación
>>capturando los eventos de la pulsación de las teclas Ins, Del y Return
>>respectivamente. He codificado un método en el evento OnKeyDown del
>>TDBBrowse, pero únicamente funciona la pulsación de la tecla Return:
>>
>>METHOD DBBrowseKeyDown( oSender, nKey, nFlags ) CLASS TFormCentros
>>
>> switch nKey
>> case K_RETURN
>> ::Edit()
>> exit
>> case K_DEL
>> ::Del()
>> exit
>> case K_INS
>> ::Add()
>> exit
>> end switch
>>
>>RETURN Nil
>>
>>Como no encontraba las constantes en Xailer.ch he añadido el #include
>>"Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal? No
>>hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y perdonad
>>si es fallo mí­o.
>>
>>--
>>Un saludo,
>>Jaime Irurzun.
>>
>
>
>
>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por Xevi »

Gracias, José Luis,
Me faltaba incluir EXIT... y no podía probarlo correctamente.
Un Saludo,
Xevi.
"José Luis Capel" <capelsoft@terra.es> escribió en el mensaje
news:[email=438d5b52@ozsrvnegro.ozlan.local...]438d5b52@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
>
> Pongamos por caso:
>
> Hay que comprobar que un parámetro pueda ser A, C, X, Y, H,T donde A,C y H
> tienen el mismo código.
>
> Con DO CASE
>
> DO CASE
> CASE uParam == "A" .OR. uParam == "C" .OR. uParam == "H"
> ....
> ....
> ....
> CASE uParam == "X"
> ....
> CASE uParam == "Y"
> ....
> CASE uParam == "T"
> ....
> OTHERWISE
> ....
> ENDCASE
>
> Con SWITCH
>
> SWITCH uParam
> CASE "A"
> CASE "C"
> CASE "H"
> ....
> EXIT // Importante!!!!
> CASE "X"
> ...
> EXIT
> CASE "Y"
> ...
> EXIT
> CASE "T"
> ...
> EXIT
> DEFAULT
> ...
> END
>
> Saludos,
> José Luis Capel
>
>
> Xevi escribió:
>> Ya que se habre hilo usando la extensión SWITCH...END
>>
>> Vimos en Madrid, cuando podemos utilizar el SWICHT... pero no me quedó
>> claro porqué???
>> Alguna explicación sobre ventajas a utilizar SWITCH frente a DO CASE o
>> IF...ELSE
>> ¿Cual es más rápido a evaluar???
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Jaime Irurzun" <jaime.irurzun@gmail.com> escribió en el mensaje
>> news:438cb0c6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>>>Hola,
>>>
>>>Estoy tratando de lanzar los métodos de Alta, Baja y Modificación
>>>capturando los eventos de la pulsación de las teclas Ins, Del y Return
>>>respectivamente. He codificado un método en el evento OnKeyDown del
>>>TDBBrowse, pero únicamente funciona la pulsación de la tecla Return:
>>>
>>>METHOD DBBrowseKeyDown( oSender, nKey, nFlags ) CLASS TFormCentros
>>>
>>> switch nKey
>>> case K_RETURN
>>> ::Edit()
>>> exit
>>> case K_DEL
>>> ::Del()
>>> exit
>>> case K_INS
>>> ::Add()
>>> exit
>>> end switch
>>>
>>>RETURN Nil
>>>
>>>Como no encontraba las constantes en Xailer.ch he añadido el #include
>>>"Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal? No
>>>hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y perdonad
>>>si es fallo mío.
>>>
>>>--
>>>Un saludo,
>>>Jaime Irurzun.
>>>
>>
>>
>>
>>
>
Xevi
Mensajes: 1706
Registrado: Jue Sep 08, 2005 12:58 pm

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por Xevi »

Entiendo...
Intentaré utilizar SWITH en los casos que me sean posibles... si es por
ganar mas velocidad !!!
Velocidad entre DO CASE...CASE...ENDCASE y IF...ELSEIF...ENDIF
¿Cual escojer???
Yo estoy acostumbrado a utilizar IF...ELSE...ENDIF... ¿tengo mal vicio???
Un Saludo,
Xevi.
"José Luis Capel" <joseluis@iaicom.com> escribió en el mensaje
news:438d614b$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
> Xevi,
>
> Te sigo respondiendo.
>
> SWITCH es más rápido de evaluar. ¿Por que? Porque solo mira constantes
> que se resuelven en tiempo de compilación. Por ejemplo, esto no vale para
> switch
>
> SWITCH uParam
> CASE MiFuncion() // Es una función: no lo admite switch
> CASE a == b // comparaciones: no las admite
> CASE MiVariable // No admite variables
> END
>
> Saludos,
> José Luis Capel
>
>
> Xevi escribió:
>> Ya que se habre hilo usando la extensión SWITCH...END
>>
>> Vimos en Madrid, cuando podemos utilizar el SWICHT... pero no me quedó
>> claro porqué???
>> Alguna explicación sobre ventajas a utilizar SWITCH frente a DO CASE o
>> IF...ELSE
>> ¿Cual es más rápido a evaluar???
>>
>>
>> Un Saludo,
>> Xevi.
>>
>>
>> "Jaime Irurzun" <jaime.irurzun@gmail.com> escribió en el mensaje
>> news:438cb0c6$[email=1@ozsrvnegro.ozlan.local...]1@ozsrvnegro.ozlan.local...[/email]
>>
>>>Hola,
>>>
>>>Estoy tratando de lanzar los métodos de Alta, Baja y Modificación
>>>capturando los eventos de la pulsación de las teclas Ins, Del y Return
>>>respectivamente. He codificado un método en el evento OnKeyDown del
>>>TDBBrowse, pero únicamente funciona la pulsación de la tecla Return:
>>>
>>>METHOD DBBrowseKeyDown( oSender, nKey, nFlags ) CLASS TFormCentros
>>>
>>> switch nKey
>>> case K_RETURN
>>> ::Edit()
>>> exit
>>> case K_DEL
>>> ::Del()
>>> exit
>>> case K_INS
>>> ::Add()
>>> exit
>>> end switch
>>>
>>>RETURN Nil
>>>
>>>Como no encontraba las constantes en Xailer.ch he añadido el #include
>>>"Inkey.ch" de xHarbour y he utilizado esas constantes. ¿Hago algo mal? No
>>>hace ni caso a las pulsaciones de SUPR e INS... Muchas Gracias y perdonad
>>>si es fallo mío.
>>>
>>>--
>>>Un saludo,
>>>Jaime Irurzun.
>>>
>>
>>
>>
>>
>
Avatar de Usuario
jfgimenez
Site Admin
Mensajes: 5718
Registrado: Lun Abr 06, 2015 8:48 pm
Contactar:

Detección de teclas pulsadas sobre TDBBrowse

Mensaje por jfgimenez »

Xevi,
> Velocidad entre DO CASE...CASE...ENDCASE y IF...ELSEIF...ENDIF
> ¿Cual escojer???
> Yo estoy acostumbrado a utilizar IF...ELSE...ENDIF... ¿tengo mal vicio???
Yo también acostumbro a usar IF...ELSEIF...ENDIF ;-)
Por lo que yo sé, las dos contrucciones generan exactamente el mismo pcode.
Por lo tanto, usa el que más te guste.
--
Un saludo,
José F. Giménez
José F. Giménez
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
Responder