Przewijanie ScrollBox'a za pomocą rolki myszki

0

Witam,
mam problem z obsługą rolki myszki i użyciem jej do przewijania ScrollBox'a. Szukałem w google różnych rozwiązań niestety nic się nie przewijało.

Używałem OnMouseWheel, OnMouseWheelUp, OnMouseWheelDown, ale niestety nic się nie działo. Próbowałem też zamiast przewijania wykonać inną czynność w tych procedurach, np.: Button1.Enable := True lub False. Nic. Tak jakby w ogóle nie przechodził do tej procedury. Dlaczego?
W ScrollBox'ie mam włożony komponen TChart oraz TStringGrid.

Czy jest wstanie mi ktoś pomóc?

Z góry bardzo dziękuję za każdą odpowiedź ;)
Pozdrawiam ;)

0

tak mi coś śmierdziało ;]

ScrollBox.TabStop := True;

Działa, tylko upewnij się, że ScrollBox ma focus

0

U mnie zmiana tej wartości nic nie zmienia :/

0
{Aby przwijać np ScrollBox kółkiem myszki należy}

//ustawić fokus na ten ScrollBox "SBox", np.: w komunikacie MouseMovie dla ScrollBoxa
begin
 SBox.SetFocus;
end;

//reakcje na kręcenie kółkiem myszki
procedure TForm1.SBoxMouseWheelDown(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
 SBox.VertScrollBar.Position := SBox.VertScrollBar.Position + 10;
 SBox.SetFocus;
end;

procedure TForm1.SBoxMouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
 SBox.VertScrollBar.Position := SBox.VertScrollBar.Position - 10;
 SBox.SetFocus;
end;
0

Kontrolka musi mieć focus:

Windows.SetFocus( ScrollBox.handle );
0

Wielkie dzięki Opi oraz hyperhex ;)

Jedyna uwaga jest taka:
Czy musi być SetFocus w MouseMovie, bo w momencie przesuwania myszki trochę obciąża to procesor ;)
Może być w FormCreate?

0

Jeżeli nie masz innych kontrolek na formie to w OnCreate/OnShow itp wystarczy

0

No nie za bardzo...
Mam kilka ScrollBox'ów... Ale każdy jest na innej stronie w komponencie TPageControl ;)
Więc może przy zmianie strony w tym komponencie uruchomić SetFocus?

Wielkie dzięki jeszcze raz ;)
Pozdrawiam ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1