Ver la Versión Completa : Obtener configuración en Windows del incremento de la Rueda de Raton
gluglu
16-05-2008, 19:59:11
Hola Compañer@s !
Cómo puedo obtener en mi programa Delphi el valor configurado en Windows correspondiente al número de incrementos que se producen cada vez que se gira la rueda del ratón ?
Gracias por vuestra ayuda. ;)
gluglu
16-05-2008, 20:08:21
Encontré esto (http://msdn.microsoft.com/en-us/library/system.windows.forms.systeminformation.mousewheelscrolldelta.aspx)
SystemInformation..::.MouseWheelScrollDelta Property
Gets the amount of the delta value of a single mouse wheel rotation increment.
Como puedo obtener dicho valor en Delphi ? :confused:
cHackAll
16-05-2008, 21:37:07
Acaso no es una constante??? (WHEEL_DELTA)
gluglu
16-05-2008, 22:38:48
Gracias Javier,
He estado indagando acerca de WHEEL_DELTA como constante y WheelDelta como parámetro pasado en el evento OnMOuseWheel. También ví este hilo (http://www.clubdelphi.com/foros/showpost.php?p=229204&postcount=3) tuyo.
Lo que pasa es que precisamente WHEEL_DELTA es una constante que (creo) define el número de píxeles a mover.
Mi problema surge por otro lado. Al parecer, al estar trabajando con un componente de terceros, el evento OnMouseWheel (o también OnMouseWheelDown y OnMouseWheelUp) se me ejecuta tres veces cada vez que giro la rueda de ratón.
Si pongo Handled := True en dicho evento, a pesar de todo me vuelve a ejecutar en este caso dos veces el mismo evento ! :eek:
Por más que intento encontrar el por qué, no me lo explico. Entiendo, y además lo he utilizado en otras partes de mi programa donde no utilizo este componente de terceros, que con Handled := True debe de ejecutarme el OnMouseWheel una única vez. Pues no .... :mad: Dos veces.
Y no tengo forma de evitarlo. Por eso estaba indagando acerca del valor definido en el Panel de Control de Windows para el valor de la rueda del ratón. Y apañarmelas yo de alguna manera. Pero por eso parece que el WHEEL_DELTA no me sirve porque al analizarlo, el valor de la constante es 120 y no es ningún valor concreto que me indica el número de veces previsto que se va a ejecutar la rutina OnMouseWheel en el (teórico) caso de que no utilizara Handled := True.
A lo mejor alguien sabe ayudarme de otra manera.
Gracias de nuevo :)
gluglu
16-05-2008, 23:31:35
Busqué .... y encontré .... :p
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, My_Value, 0)
Me devuelve el valor que busco del número de avances que provoca cada giro de la rueda del ratón dentro de la variable My_Value que es del tipo LongBool.
cHackAll
16-05-2008, 23:38:09
procedure TForm1.Button1Click(Sender: TObject);
var Value: Cardinal;
begin
SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Value, 0);
ShowMessage(IntToStr(Value));
end;
Lo mismo te hiba a decir, ahora solo te corrijo a pesar de no ser el adecuado; :(
...A lo mejor alguien sabe ayudarme de otra manera.
Saludos
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.