![]() |
WM_MOUSEWHEEL abfragen
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:
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.
...
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; Wie kann man prüfen ob das Mausrad nach oben oder unten gedreht wurde? Oder wo liegt jetzt der Fehler? Danke schonmal, Patrick |
Re: WM_MOUSEWHEEL abfragen
In meiner Hilfe zu WM_MOUSEWHEEL steht:
Zitat:
|
Re: WM_MOUSEWHEEL abfragen
Cool, danke =)
Ich werds mal probieren. Bei mir hats in der Hilfe nämlich nix gefunden.. |
Re: WM_MOUSEWHEEL abfragen
Ok, das zDelta hab ich jetzt, aber wie kann ich bei SendMessage
Delphi-Quellcode:
einstellen, dass nach oben bzw. nach unten gescrollt wird?
WM_MOUSEWHEEL: SendMessage(SynEdit2.Handle, WM_VSCROLL,
TWMVScroll(msg).ScrollCode, TWMVScroll(msg).Pos); |
Re: WM_MOUSEWHEEL abfragen
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.
|
Re: WM_MOUSEWHEEL abfragen
Zitat:
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. |
Re: WM_MOUSEWHEEL abfragen
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; |
Re: WM_MOUSEWHEEL abfragen
Außerdem ist bei VCL-Controls Perform zu bevorzugen.
|
Re: WM_MOUSEWHEEL abfragen
Zitat:
|
Re: WM_MOUSEWHEEL abfragen
Und mit Perform, wie oben vorgeschlagen?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:55 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 by Thomas Breitkreuz