![]() |
Mit dem Mausrad in einer Scrollbox scrollen
Hallo,
wenn ich in einer Scrollbox mit dem Mausrad scrolle, dann soll die Scrollbar nach unten bzw. oben scrollen. Warum bewegt sich die Scrollbar kein Millimeter? Hier der Code:
Delphi-Quellcode:
procedure TForm1.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean); begin ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position + 20; end; procedure TForm1.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - 20; end; |
AW: Mit dem Mausrad in einer Scrollbox scrollen
Hmm..
Verkehrtes Event... 'OnMouseWheel' ist fürs scrollen zuständig... OnWheelDown entspricht dem MouseDown, nur halt für Weel... |
AW: Mit dem Mausrad in einer Scrollbox scrollen
Zitat:
Ich muss doch wissen, ob man mit der Maus nach oben oder unten scrollt? |
AW: Mit dem Mausrad in einer Scrollbox scrollen
Wie HolgerX schon geschrieben hat, sind das die Events für den Mausrad-Tatendruck nicht die Bewegung des Rades. OnMouseWheel ist das was du brauchst. Der Paramter WheelDelta in diesem Event gibt dir an wieviel du scrollen musst. Der Wert ist positiv oder negativ je nach Richtung.
|
AW: Mit dem Mausrad in einer Scrollbox scrollen
Nun ja das steht im HiWord von WPARAM..
Wenn WM_MOUSEWHEEL bedient wird. Dafür nimmt aber nicht UP\Down sondern wie Holger schon sagte OnMouseWheel.. Zitat:
Das ist abhängig davon was du in den Systemeinstellungen angegeben hast. Das hier hat also keinen Effekt weil hier die Systemeinstellungen übernommen werden. Bei mir wären das dann 3 und nicht 20, erzwingen kannst du das nicht.
Delphi-Quellcode:
ScrollBox1.VertScrollBar.Position + 20;
Quatsch.. sorry. Ist die Richtung in der gescrollt wird. gruss |
AW: Mit dem Mausrad in einer Scrollbox scrollen
Das richtige Ereignis zu nehmen hat auch nicht geholfen.
Genau das gleiche Verhalten, wie vorher.
Delphi-Quellcode:
procedure TForm1.ScrollBox2MouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin ScrollBox2.VertScrollBar.Position := ScrollBox2.VertScrollBar.Position + WheelDelta; end; |
AW: Mit dem Mausrad in einer Scrollbox scrollen
|
AW: Mit dem Mausrad in einer Scrollbox scrollen
WheelDelta kann er nutzen um entsprechend zu scrollen. Der Wert ist übrigens immer 120/-120. Das ist im MSDN auch so beschrieben. Ein schneller Test hat das bei mir bestätigt. Wenn ich die Mauseinstellungen ändere, hat das keine Wirkung auf diesen Wert.
Dieser Wert kann aber in der Berechnung der Pixel benutzt werden. Sein Event könnte dann etwas so aussehen:
Delphi-Quellcode:
Der Wert 10 im Beispiel kann entsprechend angepasst werden um die gewünschte Defaultgeschwindigkeit zu bestimmen. Wie grösser dieser Wert ist, umso kleiner ist der Scrollbereich mit einer Mausraddrehung. Mouse.WheelScrollLines ist der Wert aus den Mauseinstellungen.
procedure TForm1.ScrollBox1MouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint;
var Handled: Boolean); begin ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - (WheelDelta * Mouse.WheelScrollLines div 10); end; |
AW: Mit dem Mausrad in einer Scrollbox scrollen
Zitat:
|
AW: Mit dem Mausrad in einer Scrollbox scrollen
Delphi-Quellcode:
(WheelDelta * Mouse.WheelScrollLines div 10);
yep.. wäre eine Möglichkeit :thumb: Zitat:
Aber gut letztendlich egal. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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