AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Mousewheel kontrollieren

Ein Thema von EWeiss · begonnen am 21. Aug 2017 · letzter Beitrag vom 21. Aug 2017
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Mousewheel kontrollieren

  Alt 21. Aug 2017, 07:45
Finde keine Möglichkeit zu kontrollieren wann das Rad nicht mehr bewegt wird.
Mit welcher Message könnte man das gegenprüfen?

Ich zeichne die aktuelle Value beim scrollen auf ein Bitmap und setze dann beim Scrollen bWheel auf True.
Jetzt benötige ich eine Message in der ich bWheel wieder auf false setzen kann.

gibt es da was?

Bei HSCROLL kann ich das kontrollieren über TB_ENDTRACK wie bei WM_MOUSEWHEEL ?


gruss

Geändert von EWeiss (21. Aug 2017 um 12:43 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.062 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mousewheel kontrollieren

  Alt 21. Aug 2017, 08:38
Ne, der Ansatz ist verkehrt.
Führe die Aktion, die von bWheel = True ausgelöst wird, immer nur einmal aus, wenn die Message eintrudelt und höre dann auf.
Natürlich entsprechend des Vorzeichen des Wertes von WheelDelta reagieren.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Mousewheel kontrollieren

  Alt 21. Aug 2017, 08:44
Ne, der Ansatz ist verkehrt.
Führe die Aktion, die von bWheel = True ausgelöst wird, immer nur einmal aus, wenn die Message eintrudelt und höre dann auf.
Natürlich entsprechend des Vorzeichen des Wertes von WheelDelta reagieren.
kleines Beispiel wie du das meinst?

gruss
  Mit Zitat antworten Zitat
e-gon

Registriert seit: 7. Jul 2003
Ort: Stuttgart
156 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Mousewheel kontrollieren

  Alt 21. Aug 2017, 09:41
Hallo EWeiss,

Delphi ist eine Ereignisorientierte Sprache. Das Programm wartet in der Regel auf irgendwelche Ereignisse und reagiert dann darauf.

Wenn der Benutzer das Mausrad ein Ritzel weiterdreht, wird je nach Drehrichtung um eine bestimmte Weite (üblicherweise 3 Zeilen) gescrollt. Drehst Du das Mausrad drei Ritzel weit, wird zuerst das erste Ritzel abgearbeitet, dann das zweite und anschließend das dritte. Jedes Ritzel ist ein Ereignis. Deshalb benötigt man kein "Mausrad nicht mehr drehend"-Ereignis.

Gruß
e-gon
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.062 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Mousewheel kontrollieren

  Alt 21. Aug 2017, 09:41
Ne, der Ansatz ist verkehrt.
Führe die Aktion, die von bWheel = True ausgelöst wird, immer nur einmal aus, wenn die Message eintrudelt und höre dann auf.
Natürlich entsprechend des Vorzeichen des Wertes von WheelDelta reagieren.
kleines Beispiel wie du das meinst?

gruss
Versuchen wir es mal anders:
Was passiert denn in deiner Anwendung, wenn bWheel auf True gesetzt wird?
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Mousewheel kontrollieren

  Alt 21. Aug 2017, 09:48
Zitat:
Was passiert denn in deiner Anwendung, wenn bWheel auf True gesetzt wird?
Dann zeichne ich mein Bitmap..

Und nach dem zeichnen wird bWheel auf false gesetzt.
Das ist mir aber zu kurz weil dann direkt wieder auf die Anzeige der Zeit geschaltet wird.

Bei der Scrollbar wird das zeichnen der Zeit erst dann fortgesetzt wenn ich das Thumbnail nicht mehr drücke.

Zitat:
Deshalb benötigt man kein "Mausrad nicht mehr drehend"-Ereignis.
Ich schon.

gruss

Geändert von EWeiss (21. Aug 2017 um 09:53 Uhr)
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.062 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Mousewheel kontrollieren

  Alt 21. Aug 2017, 10:00
Zitat:
Was passiert denn in deiner Anwendung, wenn bWheel auf True gesetzt wird?
Dann zeichne ich mein Bitmap..

Und nach dem zeichnen wird bWheel auf false gesetzt.
Das ist mir aber zu kurz weil dann direkt wieder auf die Anzeige der Zeit geschaltet wird.

Bei der Scrollbar wird das zeichnen der Zeit erst dann fortgesetzt wenn ich das Thumbnail nicht mehr drücke.
Was genau zeichnest du denn auf dein Bitmap?
Stelle dir eine MouseWheel-Aktion vor wie einmal draufklicken und loslassen auf den Thumbnail der Scrollbar vor.

Wenn es dir zeitlich nicht reicht, weil dann die Timestamp-Anzeige (?) über die Stelle sofort rüberpinselt verzögere das doch per Timer?
Delphi-Quellcode:
if bWheel then
begin
  PaintThings;
  StartTimer;
end;

...

procedure TimerEvent;
begin
  //so und soviele Millisekunden später;
  StopDoingPaintThings;
  bWheel := False;
  StopTimer;
end;
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:22 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