Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Mit Mausrad in TScrollBox scrollen (https://www.delphipraxis.net/170462-mit-mausrad-tscrollbox-scrollen.html)

elmar.faber 31. Okt 2014 07:19

AW: Mit Mausrad in TScrollBox scrollen
 
Delphi-Quellcode:
... if PtInRect((Sender as TScrollBox), MousePos) then


Irgendwie sieht das nicht so aus, als könnte das funktionieren...

Sherlock 31. Okt 2014 08:27

AW: Mit Mausrad in TScrollBox scrollen
 
Es tut aber. Was theoretisch eventuell nicht geht, klappt in der Praxis fehlerfrei.

Aber sag bitte, was sieht daran falsch aus?

Sherlock

Sailor 31. Okt 2014 12:40

AW: Mit Mausrad in TScrollBox scrollen
 
Delphi-Quellcode:
... if PtInRect((Sender as TScrollBox), MousePos) then
Weil
Delphi-Quellcode:
function PtInRect(const lprc: TRect; pt: TPoint): BOOL; stdcall;
als ersten Parameter ein TRect verlangt...

Sherlock 31. Okt 2014 12:46

AW: Mit Mausrad in TScrollBox scrollen
 
Eiverdibsch!! Da ist mir doch tatsächlich etwas verloren gegangen:
Delphi-Quellcode:
  if PtInRect((Sender as TScrollBox).BoundsRect, MousePos) then
Danke für den Hinweis!

Sherlock

stalkingwolf 27. Dez 2017 13:30

AW: Mit Mausrad in TScrollBox scrollen
 
Viele Jahre später ....

ich habe gerade das gleiche Problem.

Ich habe eine TScrollbox und darauf ein TImage welches über die ganze Scrollbox gezogen wird.
Ich habe darin ein Bild was genauso breit wie die Scrollbox, aber höher als die Scrollbox ist.

Ich würde nun ebenfalls gern mit der Maus darin hoch/runter scrollen. Aber ich bekomme das Event nicht abgefangen.
Weder auf der Form, noch in der Scrollbox.

Leider hat TImage kein Event dazu.

Edit : Ok hab es hinbekommen, aber anders als hier beschrieben

Code:
procedure Tmyapp.FormMouseWheelDown(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
var vsb    : TControlScrollbar;
    lp,mp  : TPoint;
    mr     : TRect;
begin
    GetCursorPos(mp);
    lp := Scrollbox1.ClientToScreen(Point(0,0));
    mr := Rect(lp,Point(lp.x+scrollbox1.width,lp.y+scrollbox1.Height));
    if PtInRect(mr, mp) then begin
        vsb            := Scrollbox1.VertScrollBar;
        vsb.Position   := vsb.Position + vsb.Increment;
        Handled        := true;
        log.lines.add('Scrollrad Form down');
    end;
end;
boundrect hat gar nicht funktioniert, weil boundrect mir 0,0 angab weil die Scrollbox auf einem Panel saß. D.h ich musste erst einmal die Punkte auf dem Screen ermitteln. und onMouseWheel reagiert bei mir gar nicht.

Sorry fürs pushen :-P

Guten Rutsch allen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz