![]() |
Get doubleclick width / height
Hi!
Gibt es um die maximale Distanz zwischen zwei Klicks festzustellen eine Art Methode wie GetDoubleClickSpeed? Im Prinzip möchte ich also diese Werte möglichst bequem auslesen: HKEY_CURRENT_USER\Control Panel\Mouse\DoubleClickWidth HKEY_CURRENT_USER\Control Panel\Mouse\DoubleClickHeight Grüße blablab |
AW: Get doubleclick width / height
Diese beiden Werte lassen sich doch recht bequem aus der Registrierung auslesen. Die nötigen Unterprogramme dazu findest Du in der Unit "Registry".
Die maximale Distanz ist dann nicht oder gerade so erreicht, wenn DoubleClickWidth und DoubleClickHeight nicht oder gerade so erreicht sind. Oder negiert: Die maximale Distanz ist dann überschritten, wenn eine der beiden Distanzen überschritten wurde. Wenn Du allerdings einen Kreis als maximale Distanz wünschst, mußt Du den Satz des Pythagoras' anwenden. |
AW: Get doubleclick width / height
...
|
AW: Get doubleclick width / height
Statt direkt aus der Registry gibs auch hier API-Calls unter Windows:
Delphi-Quellcode:
//Schreiben
Windows.SetDoubleClickTime(SpinEditSpeed.Value); Windows.SystemParametersInfo(SPI_SETDOUBLECLKHEIGHT,SpinEditHeight.Value,NIL,(SPIF_UPDATEINIFILE or SPIF_SENDCHANGE)); Windows.SystemParametersInfo(SPI_SETDOUBLECLKWIDTH,SpinEditWidth.Value,NIL,(SPIF_UPDATEINIFILE or SPIF_SENDCHANGE)); //Lesen SpinEditHeight.Value := Windows.GetSystemMetrics(SM_CYDOUBLECLK); SpinEditWidth.Value := Windows.GetSystemMetrics(SM_CXDOUBLECLK); SpinEditSpeed.Value := Windows.GetDoubleClickTime; |
AW: Get doubleclick width / height
@HolgerX:
Vielen Dank! Genau das hab ich gesucht! @Delphi-Laie: Wäre das korrekt? (Die erste Funktion ist Dank HolgerX nicht mehr nötig)
Delphi-Quellcode:
function GetDoubleClickSize: TSize;
var reg: TRegistry; begin reg := TRegistry.Create; Try reg.RootKey := HKEY_CURRENT_USER; reg.OpenKey('Control Panel\Mouse', False); Result.cx := StrToInt(reg.ReadString('DoubleClickWidth')); Result.cy := StrToInt(reg.ReadString('DoubleClickHeight')); Finally reg.Free; End; end; function InDist(const test, mid: TPoint; const eSize: TSize): Boolean; var rFx, rFy: Double; dX, dY, maxSize: Integer; begin dx := mid.X - test.X; dy := mid.Y - test.Y; maxSize := Max(eSize.cx, eSize.cy); rFx := Sqrt(Sqr(maxSize) - Sqr(eSize.cy)) / 2; rFy := Sqrt(Sqr(maxSize) - Sqr(eSize.cx)) / 2; Result := Sqrt(Sqr(dX-rFx) + Sqr(dY-rFy)) + Sqrt(Sqr(dX+rFx) + Sqr(dY+rFy)) <= maxSize; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz