Zitat von
marabu:
Wenn dein mouse wheel rechts und unten nicht erkannt wird, dann liegt das daran, dass du den Rahmen der Scrollbox nicht berücksichtigst. [...] Korrigier einfach das Rect, welches du für die Funktion ptInRect() übergibst.
marabu
Hallo marabu,
in Deinem Beispiel stand u.a.
Delphi-Quellcode:
procedure TMainForm.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
if PtInRect(ScrollBox.ClientRect, ScreenToClient(MousePos)) then
ScrollBoxMouseWheelDown(Sender, Shift, MousePos, Handled);
end;
procedure TMainForm.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
if PtInRect(ScrollBox.ClientRect, ScreenToClient(MousePos)) then
ScrollBoxMouseWheelUp(Sender, Shift, MousePos, Handled);
end;
Wenn ich nun statt der "ScrollBox.ClientRect" die ClientRect des Formulars einsetze, also
Delphi-Quellcode:
procedure TMainForm.FormMouseWheelDown(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
if PtInRect(Form.ClientRect, ScreenToClient(MousePos)) then
ScrollBoxMouseWheelDown(Sender, Shift, MousePos, Handled);
end;
procedure TMainForm.FormMouseWheelUp(Sender: TObject; Shift: TShiftState;
MousePos: TPoint; var Handled: Boolean);
begin
if PtInRect(Form.ClientRect, ScreenToClient(MousePos)) then
ScrollBoxMouseWheelUp(Sender, Shift, MousePos, Handled);
end;
schreibe, funktioniert es, da nun nicht mehr nur die Größe der Scrollbox auf dem Formular für die Mausaktion erkannt wird, sondern das ganze Formular.
Zitat von
marabu:
Funktioniert virtual scrolling mit irgendeiner Anwendung?
Beim MS-Explorer und - glaube ich - so ziemlich allen anderen käuflich erwerbbaren Programmen wird ein Bildlauf ausgelöst. Hier sieht es auch so aus, dass der Mauszeiger dabei auf den Scrollbalken springt.
Den Treiber habe ich noch nicht aktualisiert.
Gruß Bernie110