Hallo liebe Renate,
vielen Dank für den Code. In meiner Erinnerung habe ich das etwas anders im Kopf, da ich explizit entscheiden konnte, ob sich denn die Maus über den Tabs befindet.
Mit deinem aktuellen Code wird das Ereignis komplett abgefangen, eine Scrollbox innerhalb des PageControls z.B. funktioniert dann nicht mehr. Daher habe ich es etwas angepasst.
Mit dem folgenden Code wird vorher noch geprüft, ob der Mauszeiger sich auf einem Tab befindet. (eigentlich auf dem TPageControl direkt)
Delphi-Quellcode:
procedure TPageControl.cmMouseWheel(var Msg: TCMMouseWheel);
var
Dummy_Direction: Integer;
Dummy_Window: HWND;
Dummy_WinControl: TWinControl;
begin
Dummy_Window := WindowFromPoint(Msg.Pos);
if Dummy_Window <> 0 then
begin
Dummy_WinControl := FindControl(Dummy_Window);
if Dummy_WinControl <> nil then
begin
if Dummy_WinControl is TPageControl then
begin
if Msg.WheelDelta < 0 then
Dummy_Direction := 1
else
Dummy_Direction := -1;
if (Dummy_Direction = -1) and (ActivePageIndex = 0) then
ActivePageIndex := PageCount - 1
else
ActivePageIndex := (ActivePageIndex + Dummy_Direction) mod PageCount;
Msg.Result := 1;
end;
end;
end;
end;
Ich hoffe, das ist so in Ordung.
LG und ein schönes Wochenende!