![]() |
ScrollBox, Paintbox, MouseWheel
Hallo,
ich habe eine Komponente die von einer ScrollBox abgeleitet wird, diese enthält eine PaintBox. Problem: Meine Komponente scrollt nicht, wenn am MousWheel gedreht wird sondern nur über die ScrollBar der Scrollbox Ich habe schon versucht WM_MOUSEWHEEL in der jeweiligen WndProc abzufangen sowohl bei der ScrollBox als auch bei einer Ableitung von TPaintBox -> beides jedoch ohne Erfolg. Das einzigste was funktionierte war:
Delphi-Quellcode:
Wie kann ich mich von "Application.OnMessage" lösen????
TBlubViewer = class(TScrollBox)
FPaintBox:=TPaintBox; ... constructor TBlubViewer.Create(AOwner: TComponent); begin inherited; FPaintBox:=TPaintBox.Create(self); FPaintBox.Parent:=self; FPaintBox.Left:=0; FPaintBox.Top:=0; FPaintBox.OnPaint:=DoPaint; // Das funktioniert ABER NUR BEI EINER KOMPONENETE PRO FORMULAR :-( Application.OnMessage:=DoScroll; ...... procedure TBlubViewer.DoScroll(var Msg: TMsg; var Handled: Boolean); var pnt1, pnt2 : TPoint; begin // Nur bei Mausrad reagiren if (Msg.message = WM_MOUSEWHEEL) then begin // Koordinaten des Panels screenweit ermitteln pnt1 := ClientToScreen(Self.ClientRect.TopLeft); pnt2 := ClientToScreen(Self.ClientRect.BottomRight); // Testen, ob Cursor auf Panel liegt if (Mouse.CursorPos.X >= pnt1.X) and (Mouse.CursorPos.Y >= pnt1.Y) and (Mouse.CursorPos.X <= pnt2.X) and (Mouse.CursorPos.Y <= pnt2.Y) then begin if Msg.wParam>0 then begin if VertScrollBar.Position > 0 then VertScrollBar.Position:=VertScrollBar.Position-50; end else if VertScrollBar.Position < VertScrollBar.Range then VertScrollBar.Position:=VertScrollBar.Position+50; end; end; end; thx baeuerle |
Re: ScrollBox, Paintbox, MouseWheel
Versuch mal, in der Scrollbox die Message CM_MOUSEWHEEL abzufangen.
|
Re: ScrollBox, Paintbox, MouseWheel
du meinst
Delphi-Quellcode:
geht leider nicht, die Prozedur wird nicht erreicht..
TBlubViewer = class(TScrollBox)
private procedure CMMouseWheel(var Message: TCMMouseWheel); message CM_MOUSEWHEEL; ... |
Re: ScrollBox, Paintbox, MouseWheel
Wäre auch Quatsch, stelle ich gerade fest, TWinControl hat schon ein Event OnMouseWheel. Nur wird das hier unter Delphi 5 auch nicht ausgeführt :gruebel:
|
Re: ScrollBox, Paintbox, MouseWheel
Habs mit einer
![]() |
Re: ScrollBox, Paintbox, MouseWheel
Naja, Du könntest ja wahlweise auf den Parent oder die ParentForm Deiner Kompo Einfluss nehmen, obwohl ich so etwas auch nicht so doll finde.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 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