PDA

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