Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Почему в ScrollBox не работает Скрол мыши


Автор: Teran 13.4.2006, 09:30
Подскажите пожалуйта как сделать так чтобы скрол на мышке мог работать в обычном ScrollBox-е ?
smile smile smile

Автор: Fin 13.4.2006, 09:47
Перехватываеш сообшение WM_MOUSEWHEEL и уже в обработчике сообшения меняеш позицию Скролов.

Автор: Rennigth 13.4.2006, 10:47
Что-то на подобие:
Код

procedure TScrollBoxEx.WndProc(var Message: TMessage);
const
  C_RotateWheel: Integer = 120;
  C_WheelStep: Integer = 10;
begin
  if message.Msg = WM_MOUSEWHEEL then
  begin
    if Assigned(VScrollBar) and VScrollBar.Visible then
    begin
      if HIWORD(Message.wParam) = C_RotateWheel then
        VScrollBar.Position := VScrollBar.Position - C_WheelStep;
      if HIWORD(Message.wParam) = High(HIWORD(Message.wParam)) + 1 - C_RotateWheel then
        VScrollBar.Position := VScrollBar.Position + C_WheelStep;
    end;
  end;
  inherited;
end;


Автор: Poseidon 13.4.2006, 19:46
Мдя. А что процедуры onMouseWheelDown и OnMouseWheelUp уже не модно использовать?


Код

procedure TForm1.ScrollBox1MouseWheelDown(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
with ScrollBox1.VertScrollBar do Position:= Position + 5
end;

procedure TForm1.ScrollBox1MouseWheelUp(Sender: TObject;
  Shift: TShiftState; MousePos: TPoint; var Handled: Boolean);
begin
with ScrollBox1.VertScrollBar do Position:= Position - 5
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)