Autor Beitrag
mtm
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64

Windows 10 Pro 64 Bit
Delphi XE 6
BeitragVerfasst: Mo 02.05.11 11:12 
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

ausblenden volle Höhe Delphi-Quelltext
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
  // Welche Variable muss überprüft werden von MSG?
  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.