AGB  ·  Datenschutz  ·  Impressum  







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

WM_MOUSEWHEEL abfragen

Ein Thema von PatrickB · begonnen am 13. Mär 2008 · letzter Beitrag vom 14. Mär 2008
Antwort Antwort
Seite 1 von 2  1 2      
PatrickB

Registriert seit: 13. Dez 2007
61 Beiträge
 
#1

WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 14:25
Hi,

ich hab ein kleines Problemchen.
Es sind 2 SynEdit-Felder vorhanden.
Wenn ich jetzt an dem einen Feld scrolle, soll das andere auch mitscrollen.
Das hab ich jetzt so gelöst:
Delphi-Quellcode:
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  _OldProc := SynEdit1.WindowProc;
  SynEdit1.WindowProc := WndMessage;
end;
....
procedure TForm1.WndMessage(var msg: TMessage);
begin
  case msg.Msg of
    WM_VSCROLL: SendMessage(SynEdit2.Handle, WM_VSCROLL,
        TWMVScroll(msg).ScrollCode, TWMVScroll(msg).Pos);
    WM_MOUSEWHEEL: SendMessage(SynEdit2.Handle, WM_VSCROLL,
        TWMVScroll(msg).ScrollCode, TWMVScroll(msg).Pos);

  end;
  _OldProc(msg);
end;
Wenn ich jetzt an den kleinen Pfeilen an der Scrollbar scrolle, dann klappt das auch. Aber wenn man mit dem Mousewheel versucht zu scrollen, klappt das im ersten Fenster. Im 2. SynEdit-Feld scrollt es aber immer nur nach oben, egal ob ich jetzt das Mausrad herunter oder hinauf drehe.

Wie kann man prüfen ob das Mausrad nach oben oder unten gedreht wurde?
Oder wo liegt jetzt der Fehler?

Danke schonmal,

Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 14:37
In meiner Hilfe zu WM_MOUSEWHEEL steht:
Zitat:
WM_MOUSEWHEEL
fwKeys = LOWORD(wParam); // key flags
zDelta = (short) HIWORD(wParam); // wheel rotation
xPos = (short) LOWORD(lParam); // horizontal position of pointer
yPos = (short) HIWORD(lParam); // vertical position of pointer

...
zDelta

The value of the high-order word of wParam. Indicates the distance that the wheel is rotated, expressed in multiples or divisions of WHEEL_DELTA, which is 120. A positive value indicates that the wheel was rotated forward, away from the user; a negative value indicates that the wheel was rotated backward, toward the user.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
PatrickB

Registriert seit: 13. Dez 2007
61 Beiträge
 
#3

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 14:43
Cool, danke =)
Ich werds mal probieren. Bei mir hats in der Hilfe nämlich nix gefunden..
  Mit Zitat antworten Zitat
PatrickB

Registriert seit: 13. Dez 2007
61 Beiträge
 
#4

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 15:25
Ok, das zDelta hab ich jetzt, aber wie kann ich bei SendMessage

Delphi-Quellcode:
WM_MOUSEWHEEL: SendMessage(SynEdit2.Handle, WM_VSCROLL,
        TWMVScroll(msg).ScrollCode, TWMVScroll(msg).Pos);
einstellen, dass nach oben bzw. nach unten gescrollt wird?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 15:28
Gegenfrage: wieso schickst Du nicht einfach WM_MOUSEWHEEL an das andere Synedit? Die Parameter kannst Du doch 1:1 mit übergeben, wenn ich jetzt keinen Denkfehler habe.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
PatrickB

Registriert seit: 13. Dez 2007
61 Beiträge
 
#6

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 15:32
Zitat von DeddyH:
Gegenfrage: wieso schickst Du nicht einfach WM_MOUSEWHEEL an das andere Synedit? Die Parameter kannst Du doch 1:1 mit übergeben, wenn ich jetzt keinen Denkfehler habe.
Hm...verstehe nicht ganz was du meinst.
Ich versuche doch die Daten von SynEdit1 an SynEdit2 zu schicken..

Ich könnte ja vll ScrollBy() benutzen, aber dann wird irgendwie der ganze inhalt nach unten verschoben.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 15:34
Ich denke, das Ganze lässt sich doch vereinfachen (aus dem Kopf):
Delphi-Quellcode:
procedure TForm1.WndMessage(var msg: TMessage);
begin
  case msg.Msg of
    WM_VSCROLL,
    WM_MOUSEWHEEL: SendMessage(SynEdit2.Handle,
                               msg.Msg,
                               msg.wParam,
                               msg.lParam);
  end;
  _OldProc(msg);
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 15:36
Außerdem ist bei VCL-Controls Perform zu bevorzugen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
PatrickB

Registriert seit: 13. Dez 2007
61 Beiträge
 
#9

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 15:41
Zitat von DeddyH:
Ich denke, das Ganze lässt sich doch vereinfachen (aus dem Kopf):
Delphi-Quellcode:
procedure TForm1.WndMessage(var msg: TMessage);
begin
  case msg.Msg of
    WM_VSCROLL,
    WM_MOUSEWHEEL: SendMessage(SynEdit2.Handle,
                               msg.Msg,
                               msg.wParam,
                               msg.lParam);
  end;
  _OldProc(msg);
end;
Das klappt irgendwie auch nicht
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: WM_MOUSEWHEEL abfragen

  Alt 13. Mär 2008, 15:50
Und mit Perform, wie oben vorgeschlagen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11: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