Einzelnen Beitrag anzeigen

Benutzerbild von NoGAD
NoGAD

Registriert seit: 31. Jan 2006
Ort: Weimar
345 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: TPageControl - > Tabs per Maus durchsrollen?

  Alt 7. Mai 2022, 21:21
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!
Mathias
Ich vergesse einfach zu viel.
  Mit Zitat antworten Zitat