AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Mit dem Mausrad in einer Scrollbox scrollen

Ein Thema von delphicoder123 · begonnen am 11. Jul 2019 · letzter Beitrag vom 11. Jul 2019
Antwort Antwort
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#1

Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 13:42
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;
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#2

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 14:15
Hmm..

Verkehrtes Event...

'OnMouseWheel' ist fürs scrollen zuständig...

OnWheelDown entspricht dem MouseDown, nur halt für Weel...
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#3

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 14:28
Hmm..

Verkehrtes Event...

'OnMouseWheel' ist fürs scrollen zuständig...

OnWheelDown entspricht dem MouseDown, nur halt für Weel...
Warum falsches Event?
Ich muss doch wissen, ob man mit der Maus nach oben oder unten scrollt?
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
621 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 14:42
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.

Geändert von Rolf Frei (11. Jul 2019 um 14:44 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 14:43
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:
Der Paramter WheelDelta in diesem Event gibt dir an wieviel du scrollen musst.
Nein kannst..
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.
ScrollBox1.VertScrollBar.Position + 20;

Quatsch.. sorry.
Ist die Richtung in der gescrollt wird.


gruss

Geändert von EWeiss (11. Jul 2019 um 20:33 Uhr)
  Mit Zitat antworten Zitat
delphicoder123

Registriert seit: 14. Feb 2019
102 Beiträge
 
#6

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 15:14
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;
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 15:33
Hier im Forum suchenWheelDelta

gruss
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
621 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 15:48
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:
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;
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.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
621 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 15:53
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;
Du musst bei ScrollBox2.VertScrollBar.Range einen Wert drin haben der grösser als die Höhe deiner Scrollbox ist, ansonsten kann er ja auch nichts scrollen. Der Range gibt dir an wie hoch der Scrollbereich sein soll. Setze den mal 4000 und dann klappt das auch mit dem Scrollen. Verwende mein Beispiel vom letzten Post. Das passt die Geschwindigkeit an die Einstellung der Maus an.

Geändert von Rolf Frei (11. Jul 2019 um 15:57 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#10

AW: Mit dem Mausrad in einer Scrollbox scrollen

  Alt 11. Jul 2019, 15:55
 (WheelDelta * Mouse.WheelScrollLines div 10);
yep.. wäre eine Möglichkeit
Zitat:
WheelDelta kann er nutzen um entsprechend zu scrollen. Der Wert ist übrigens immer 120/-120.
Nun bei mir 1 oder -1 es zeigt die Richtung an in der gescrollt wird.
Aber gut letztendlich egal.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:02 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 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