Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
GetKeyState

Hola,

hace tiempo tuve un problema con un HotKey que utilizaba para saber el estado de las teclas BloqMayus y BloqNum (este es el hilo).

El caso es que mi código no tenía fallos (el que pusieron tampoco), sino que el fallo estaba en mi comprobación. Para saber si estaban activadas, yo ponía

Código Delphi [-]
If GetKeyState(VK_CAPITAL)=1 then Barra.Panels[3].Text:='MAYUS' else Barra.Panels[3].Text:='';

Tras varias comprobaciones descubrí que el fallo era GetKeyState, que no devolvía el estado real de la tecla.

Lo resolví cambiando la comprobación (si se pulsaba la tecla y el texto estaba mostrado, se quitaba, sino se mostraba).

El caso es que en el programa tengo un TNMemo, derivado de TMemo al que añadí la propiedad CharCase (que se encuentra ya en TCustomEdit). Y el problema está en que si tengo el BloqMayus activado el texto se sigue escribiendo en minúsculas (pero no si puslo la tecla Shift).

¿El problema es del CharCase o que el componente escribe mayúsculas según GetKeyState?

Gracias desde ya
Responder Con Cita
  #2  
Antiguo 11-09-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

El "problema" que comentas yo lo achacaría al "CharCase". En cuanto a la comprobación del resultado de "GetKeyState", ha de hacerse como Román indica aquí. Es un mensaje recogido de este Hilo, donde se trató extensamente el tema que te ocupa. Podrías echarle un vistazo. Creo que te interesaría.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 11-09-2006
Northern Northern is offline
Miembro
 
Registrado: ene 2006
Posts: 211
Poder: 19
Northern Va por buen camino
Si miras la ayuda de GetKeyState te dice que si el "bit" más significativo está a 1 la tecla está pulsada y que si el bit menos significativo está a 1 la tecla está actvia (las teclas con luz).

Debería ser if HiByte(GetKeyState(vk_anyKey)) <> 0 then pulsada y if LowByte(GetKeyState(VK_NUMLOCK)) <> 0 then teclaactiva

....

Creo que es así pero no estoy seguro
Responder Con Cita
  #4  
Antiguo 13-09-2006
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Dec, gracias por el enlace al hilo, era justo lo que me pasaba (StatusBar, BloqMayus...), pero te equivocabas con lo del CharCase, pues he podido comprobar que el fallo estaba en GetKeyState (que no lo usaba correctamente). De todas formas llegué a otra solución (quizás un poco chapucera).

Y, Northern, probaré tu código, a ver si reduche mi chapucería.

Gracias
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 11:03:56.


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