Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
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 12-08-2005
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
No entiendo bien por qué la discrepancia en el funcionamiento. A mi me funciona como dice dec. Ahora, según la documentación, la comparación tendría que hacerse así:

Código Delphi [-]
if GetKeyState(VK_CAPITAL) and 1 = 1 then
  ...

Por otra parte, si lo que se desea es mostrar el estado de estas teclas en una barra de estado, yo me olvidaría del OnKeyDown y pondría un Timer que se ejecute cada 10 ms en donde haría la comprobación. De esta manera, sólo tienes que poner el código en un lugar y además el estado se reflejará correctamente aun cuando el estado de la tecla cambie por razones distintas a oprimir la tecla (al menos a mi me pasa cada tanto que la tecla NumLock se apaga luego de correr alguna aplicación).

// Saludos
Responder Con Cita
  #2  
Antiguo 12-08-2005
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 22
Sr.Scorpion Va por buen camino
Lightbulb

Esa sentencia merece un aplauso y una reverencia..... esto hace que el procedimiento sea unico y no haya que introducirle parametros de tecla. Por lo tanto el procedimiento quedaria asi...

Código:
 procedure TMain.KeyState();
begin
If GetKeyState(VK_NUMLOCK) and 1 = 1 Then
 StatusBar.Panels[2].Style:= psText
else
 StatusBar.Panels[2].Style:= psOwnerDraw;
If GetKeyState(VK_CAPITAL) and 1 = 1 Then
 StatusBar.Panels[3].Style:= psText
else
 StatusBar.Panels[3].Style:= psOwnerDraw;
If GetKeyState(VK_SCROLL) and 1 = 1 Then
 StatusBar.Panels[4].Style:= psText
else
 StatusBar.Panels[4].Style:= psOwnerDraw;
end;
roman... en cuanto a lo del Timer no me gusta mucho esa idea debido a que no tiene un efecto inmediato, es decir yo aprieto el CapsLock y se me demora 10 o 5 segundos en mostrarse ese cambio en mi aplicacion. Por lo menos en cuanto a mi respecta me gusta mas la onda del OnKeyDown, tiene un efecto mas inmediato. No obstante te agradezco que hayas intervenido en este post tu sentecia de verdad que me fue muy util

Saludos y Gracias
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #3  
Antiguo 12-08-2005
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 Sr.Scorpion
roman... en cuanto a lo del Timer no me gusta mucho esa idea debido a que no tiene un efecto inmediato
¿¿¿¡¡¡¡¡10 milisegundos no se te hace inmediato!!!!?????

Simplemente pon la propiedad Interval del timer en 10 (incluso 50 0 100 debe ser suficiente). Te aseguro que el efecto es inmediato.

// Saludos
Responder Con Cita
  #4  
Antiguo 12-08-2005
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
¿Has pensado que sucede si el usuario activa otra aplicación y estando en ella cambia el estado de alguna de estas teclas? ¿Crees que tu aplicación lo detectará? Haz la prueba.

// Saludos
Responder Con Cita
  #5  
Antiguo 12-08-2005
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 22
Sr.Scorpion Va por buen camino
Primero disculpa.... pense que habias dicho 10 segundos cuando en realidad eran 10 milisegundos. Bueno pensandolo bien no esta nada mal eso.... en esa parte tiene razon....
Ahora pregunto yo.... no seria mucho que a cada 10 mseg. se este ejecutando una accion, traiga esto como consecuencia algun error en la aplicacion o que esta intervenga en la ejecucion de otra o algo por el estilo ???

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #6  
Antiguo 12-08-2005
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 Sr.Scorpion
Ahora pregunto yo.... no seria mucho que a cada 10 mseg. se este ejecutando una accion, traiga esto como consecuencia algun error en la aplicacion o que esta intervenga en la ejecucion de otra o algo por el estilo ???
No te lo puedo asegurar pero dudo que hay problema. Si cada 10 ms exportaras una tabla de 100,000 registros seguramente habría algún problema pero el código que se ejecutaría en el OnTimer es sumamente rápido.

// Saludos
Responder Con Cita
  #7  
Antiguo 12-08-2005
Avatar de Sr.Scorpion
Sr.Scorpion Sr.Scorpion is offline
Miembro
 
Registrado: mar 2005
Posts: 92
Poder: 22
Sr.Scorpion Va por buen camino
bueno pues entonces .... caso resuelto. Se queda el Timer que es mas abarcador que el OnKeyDown. Mil Gracias Roman por tus consejos.

Saludos
__________________
La paciencia es un árbol de raíz amarga pero de frutos muy dulces.

Sr.Scorpion
Responder Con Cita
  #8  
Antiguo 13-08-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 26
vtdeleon Va por buen camino
Saludos
dec, probando tu fabuloso editor encontre lo que comenta roman
Cita:
Empezado por roman
¿Has pensado que sucede si el usuario activa otra aplicación y estando en ella cambia el estado de alguna de estas teclas?
Haciendo pruebas con el Caps, Numlock e Insert.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
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 15:49:10.


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