![]() |
TCategoryPanelGroup, MouseWheel, Scroll?
Moinsen!
Ja was soll ich sagen? Die Überschrift sagt eigentlich schon alles aus: Wie bekommt man ein TCategoryPanelGroup dazu, auf ein MouseWheel hin zu reagieren? Grüße Cody EDIT: Ich habe jetzt mal einen Tip aus ![]()
Delphi-Quellcode:
procedure TForm5.FormMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); var I: Integer; begin Handled := PtInRect(CategoryPanelGroup1.ClientRect, CategoryPanelGroup1.ScreenToClient(MousePos)); if Handled then begin for I := 1 to Mouse.WheelScrollLines do try if WheelDelta > 0 then CategoryPanelGroup1.Perform(WM_VSCROLL, SB_LINEUP, 0) else CategoryPanelGroup1.Perform(WM_VSCROLL, SB_LINEDOWN, 0); finally CategoryPanelGroup1.Perform(WM_VSCROLL, SB_ENDSCROLL, 0); end; end; end; |
AW: TCategoryPanelGroup, MouseWheel, Scroll?
Hallo, dieser Beitrag ist zwar schon sehr alt, nur als generische Lösung habe ich noch eine Änderung.
Statt das Ereignis in der Form auszuwerten und für jedes TCategoryPanelGroup einzeln anzusteuern, kann die Prüfung auch im Ereignis der Komponente selbst erfolgen. Wichtig ist, dass das Form-Ereignis trotzdem Priorität gegenüber diesem hier hat.
Delphi-Quellcode:
Hierbei könnte m.M.n sogar die Prüfung des Mauszeigers weggelassen werden, da es sich ja um das gewünschte Objekt handelt ( if DummyComponent is TCategoryPanelGroup then )
procedure TForm1.CategoryPanelGroup1MouseWheel(Sender: TObject;
Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); var i: Integer; DummyComponent: TComponent; begin DummyComponent := Sender as TComponent; if DummyComponent is TCategoryPanelGroup then begin Handled := PtInRect((DummyComponent as TCategoryPanelGroup).ClientRect, (DummyComponent as TCategoryPanelGroup).ScreenToClient(MousePos)); if Handled then begin for i := 1 to Mouse.WheelScrollLines do try if WheelDelta > 0 then (DummyComponent as TCategoryPanelGroup) .Perform(WM_VSCROLL, SB_LINEUP, 0) else (DummyComponent as TCategoryPanelGroup) .Perform(WM_VSCROLL, SB_LINEDOWN, 0); finally (DummyComponent as TCategoryPanelGroup).Perform(WM_VSCROLL, SB_ENDSCROLL, 0); end; end; end; end;
Delphi-Quellcode:
Handled := PtInRect((DummyComponent as TCategoryPanelGroup).ClientRect,
(DummyComponent as TCategoryPanelGroup).ScreenToClient(MousePos)); LG Mathias |
AW: TCategoryPanelGroup, MouseWheel, Scroll?
Reicht es nicht das EndScroll einmal nach allen LineUp/LineDown zu machen?
(For in das Try-Finally) |
AW: TCategoryPanelGroup, MouseWheel, Scroll?
Du hast Recht. Das habe ich nicht beachtet, weil ich den vorherigen Code einfach abgeändert hatte.
Danke :-) LG Mathias |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 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