Zitat von
Schneck:
Woher weiß wer sowas?
Mischung aus Zufall, Erfahrung und in-
DP-gelesen
Zum Problem: sieh Dir mal folgendes Beispiel an...
Delphi-Quellcode:
procedure TZeichenBlatt.CMMouseWheel(var Message: TCMMouseWheel);
var
MousePos: TPoint;
IsNeg: Boolean;
procedure MouseWheelUp();
begin
//... DoScroll(WHEEL_DELTA);
end;
procedure MouseWheelDown();
begin
//... DoScroll(-WHEEL_DELTA);
end;
begin
MousePos := SmallPointToPoint(Message.Pos);
Inc(FWheelAccumulator, Message.WheelDelta);
while (Abs(FWheelAccumulator) >= WHEEL_DELTA) do
begin
IsNeg := FWheelAccumulator < 0;
FWheelAccumulator := Abs(FWheelAccumulator) - WHEEL_DELTA;
if (IsNeg) then
begin
if (FWheelAccumulator <> 0) then
FWheelAccumulator := -FWheelAccumulator;
MouseWheelDown();
end
else
MouseWheelUp();
end;
end;
...wie man schon an der Nomenklatur erkennt, ist FWheelAccumulator eine private Variable der Klasse.
Gruss Nico
ps: hab hier kein Delphi zum Testen, sorry