Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Scrollen per Mausrad will nicht (https://www.delphipraxis.net/109928-scrollen-per-mausrad-will-nicht.html)

daschaos 10. Mär 2008 12:14


Scrollen per Mausrad will nicht
 
Ich versuche meine Komponente, abgeleitet von TCustomPanel, auch auf das Scrollen des Mausrads reagieren zu lassen, allerdings macht er da nur groben Unfug :(. Der Scrollbalken bewegt sich garnich und die Ausgabe der Komponente wird völlig zertsört... Wenn ich die Scrollbars "von Hand" verschiebe funktioniert alles einwandfrei, nur wäre es halt schick, wenn man auch per drehen des Mausrads scrollen könnte.

Weiß da jemand auf Anheib, was ich falsch mache?

Schonmal vielen lieben Dank!!!

Liebe Grüße,
Laura

Delphi-Quellcode:
procedure CMMouseWheel(var Message: TCMMouseWheel);
var
  ScrollDelta: Integer;
begin
  inherited;

  ScrollDelta := 0;

  if (Message.Result = 0) then
  begin
    with Message do
    begin
      Message.Result := 1;

      if ssCtrl in ShiftState then
        ScrollDelta := Sign(WheelDelta) * ClientHeight
      else
        ScrollDelta := WheelDelta;
      end;
  end;

  ScrollBy(0, ScrollDelta);
end;

Namenloser 10. Mär 2008 12:44

Re: Scrollen per Mausrad will nicht
 
Hast du mal Breakpoints gesetzt, um zu testen, ob irgendein Teil des Codes vielleicht gar nicht ausgeführt wird?

daschaos 10. Mär 2008 13:06

Re: Scrollen per Mausrad will nicht
 
Ausgeführt wurde alles, funktioniert hat es leider nich... so gehts aber jetzt:

Delphi-Quellcode:
procedure CMMouseWheel(var Message: TCMMouseWheel);
var
  ScrollDelta: Integer;
begin
  ScrollDelta := 0;

  inherited;

  if (Message.Result = 0) then
  begin
    with Message do
    begin
      Message.Result := 1;

      if ssCtrl in ShiftState then
        ScrollDelta := Sign(WheelDelta) * ClientHeight
      else
        ScrollDelta := WheelDelta;
      end;
  end;

  ScrollBarVer.Position := ScrollBarVer.Position - ScrollDelta;
  Invalidate;
end;
Das einzige Problem ist noch, dass er weiterscrollt als er darf, da muss ich noch nach schauen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:41 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