Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mausrad-Empfindlichkeit (https://www.delphipraxis.net/210864-mausrad-empfindlichkeit.html)

wendelin 23. Jun 2022 11:31

Mausrad-Empfindlichkeit
 
Hallo,
Ich habe folgendes Problem.

Wenn ich die Funktion Form1.FormMouseWheelDown(Sender...)
nutze stelle ich fest, dass von 'MouseRaste' zur nächsten 'mausraste'
innerhalb der funktion eine beliebige integer - Var um 4 einheiten incrementiert
oder decrementiert wird.

Beispiel :
Delphi-Quellcode:
 procedure Form1.FormMouseWheelDown(Sender...)
                  Var zaehler : Integer;
                  begin
                    Inc(zaehler);
                  end;
Meine Frage: gibt es eine API oder Delphi - Funktion mit welcher das geändert werden kann ?

Wendelin

himitsu 23. Jun 2022 11:45

AW: Mausrad-Empfindlichkeit
 
Liste der Anhänge anzeigen (Anzahl: 1)
OnMouseWheel statt OnMouseWheelDown verwenden, dabei vom WheelDelta nur die Richtung (Delphi-Referenz durchsuchenSign, bzw. einfach nur größer oder kleiner 0) beachten, und den Wert (Delphi-Referenz durchsuchenAbs) ignorieren.


Oder über irgendeine API, bzw. irgendwo aus der Registry wird man den Wert bestimmt auslesen können.




Eine API zum Ändern gibt es natürlich, wenn aber wenn dein Programm an den globalen Systemeinstelungen rumpfuscht, wird dich bestimmt jemand verhauen.

wendelin 17. Jul 2022 17:41

AW: Mausrad-Empfindlichkeit
 
Danke Himitsu,

werde ich ausprobieren.
Wendelin

BigAl 19. Jul 2022 06:04

AW: Mausrad-Empfindlichkeit
 
Ich nutze normalerweise "OnMouseWheel". Und dort hole ich mir den tatsächlichen Wert mit "WheelOffset := AMessage.WheelDelta / WHEEL_DELTA". Das Vorzeichen gibt dann Auskunft darüber, in welche Richtung das Rad gedreht wurde. WHEEL_DELTA ist eine Konstante von Windows (glaube 120). Als Ergebnis erhalte ich dann die Anzahl der Rasten...

OnMouseWheelUp und OnMouseWheelDown werden mit jedem Raster immer genau so of aufgerufen wie in Windows bei den Mauseinstellungen die "Zeilen, die gleichzeitig gescrollt werden sollen" eingestellt ist.

Das mit Deiner Funktion geht so eh nicht. Due deklarierst einen lokalen Integer, der nicht initialisiert ist und inkrementierst diesen. Beim verlassen der Funktion wird dieser wieder freigegeben. Entweder "zaehler" als class member definieren oder - falls nur zum Testen - außerhalb der Methode (z.B. vor dem "procedure") deklarieren...

freimatz 19. Jul 2022 06:47

AW: Mausrad-Empfindlichkeit
 
Zitat:

Zitat von himitsu (Beitrag 1507704)
Oder über irgendeine API, bzw. irgendwo aus der Registry wird man den Wert bestimmt auslesen können.
Eine API zum Ändern gibt es natürlich, wenn aber wenn dein Programm an den globalen Systemeinstelungen rumpfuscht, wird dich bestimmt jemand verhauen.

Wenn man die globale Systemeinstellung nicht benutzt aber auch. :P

himitsu 19. Jul 2022 09:27

AW: Mausrad-Empfindlichkeit
 
Es kommt drauf an, was man damit wie Scrollen will.

Diese Option ist ja namentlich mehr für MultilineEditControls.
* x Zeilen
* bzw. ganze Seite (sichtbarer Bereich)

Für Zeichenflächen will man eventuell ein anderes Scrollverhalten,
aber z.B. bei einer ComboBox (zugeklappt, also nicht in der DropdownList) oder einem Grid (nicht den sichtbaren Bereich, sondern die focusierte Zelle verschieben), da will man garnicht "mehr", sondern immer 1.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz