Hallo zusammen,
bin mir nicht ganz sicher, ob ich hier richtig bin, aber ich versuch es mal.
Ich versuche gerade eine Komponente von TImage abzuleiten, die auch das Mausrad erkennt. Eigentlich klappt es ganz gut, bis auf eine kleine Ausnahme.
Hier schon mal die wichtigsten Code-Teile
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34:
| ... interface ... const MouseWheel = WM_MouseWheel;
type TOnMouseWheelDown = procedure(Sender: TObject) of Object; TOnMouseWheelUp = procedure(Sender: TObject) of Object;
type TMWImage = class(TImage) private ... FOnMouseWheelDown: TOnMouseWheelDown; FOnMouseWheelUp: TOnMouseWheelUp; procedure WMMouseWheel(var Msg: TWMMouseWheel); message MouseWheel; ... published property OnMouseWheelDown: TOnMouseWheelDown read FOnMouseWheelDown write FOnMouseWheelDown; property OnMouseWheelUp: TOnMouseWheelUp read FOnMouseWheelUp write FOnMouseWheelUp; ...
implementation ... procedure TMWImage.WMMouseWheel(var Msg: TWMMouseWheel); begin if Msg.WheelDelta > 0 then begin if assigned(FOnMouseWheelUp) then FOnMouseWheelUp(Self); end else begin if assigned(FOnMouseWheelDown) then FOnMouseWheelDown(Self); end; end; ... |
Also wie gesagt, eigentlich erkennt die Komponente das Drehen des Mausrades, aber leider nicht auf der kompletten Größe.
Wenn die Komponente eine Größe von 500x500 hat, so wird die Mausradbewegung nur bis 176/130 erkannt. Bei einer Größe von 600x600 wird es bis 302/370 erkannt.
Hat jemand vielleicht eine Ahnung, woran das liegen könnte. Bin für jeden Vorschlag dankbar.
Danke im Voraus
mtm
EDIT : Habe noch vergessen zu erwähnen, daß ich mit Delphi 7 und Win XP arbeite.