TScrollbox mit Mausrad steuern
Hat man in einem Formular mehr Komponenten zu platzieren, als darin Platz haben, bietet es sich an, eine Scrollbox zu verwenden um innerhalb der Form scrollen zu können.
Verwendet man eine TScrollbox, so zeigt diese zwar eine Scroll-Leiste an wenn die in Ihr platzierten Komponenten über die Formulargröße hinausgehen. Allerdings kann nicht mit dem Mausrad gescrollt werden. Hier zeige ich euch wie man dieses Feature implementieren kann:
Man muß im OnMouseWheel-Event der Form (hier Form1) folgenden Code platzieren:
procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); var I: Integer; begin Handled := PtInRect(ScrollBox1.ClientRect, ScrollBox1.ScreenToClient(MousePos)); if Handled then for I := 1 to Mouse.WheelScrollLines do try if WheelDelta > 0 then ScrollBox1.Perform(WM_VSCROLL, SB_LINEUP, 0) else ScrollBox1.Perform(WM_VSCROLL, SB_LINEDOWN, 0); finally ScrollBox1.Perform(WM_VSCROLL, SB_ENDSCROLL, 0); end; end;
Mit diesem Event wird laufend auf das Mausrad reagiert. Wenn sich der Mauszeiger über der Scrollbox befindet, wird diese entsprechend rauf- oder runtergescrollt.