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


Автор: bNet 16.2.2006, 12:21
Когда компонент TTrackBar разположен на форме горизонтально, при регулировке его колесом мыши, его движение инвертированое, тоесть когда кручу колесо вверх, бегунок движется влево, когда в низ - вправо. Но когда этот компонент стоит вертикально - регулировка колесом правильная.
Как исправить ошибку?

Автор: Snowy 16.2.2006, 12:23
Это не бага - это фича.
Так и задумано. Смысл делать наоборот?

Автор: bNet 16.2.2006, 13:40
я использую этот компонент как реглятор громкости! получается кручу колесо вверх, а громкость снижается....

Автор: Snowy 16.2.2006, 14:38
Код
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;

type
  TTrackBar = class(ComCtrls.TTrackBar)
  private
    procedure WMWHEEL(var Msg: TMessage); message WM_MOUSEWHEEL;
  end;

  TForm1 = class(TForm)
    Vol: TTrackBar;
  private
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TTrackBar.WMWHEEL(var Msg: TMessage);
begin
  if Msg.WParamHi - WHEEL_DELTA > 0 then Position := Position - 1
  else Position := Position + 1;
end;

end.

Добавлено @ 14:43
P.S. Для Win9x колесо либо не будет работать вообще (т.к. 9x-e не верят в существование колеса мыши и оно не является там системным), либо будет работать стандартно - на усмотрение драйвера мыши.

Автор: bNet 16.2.2006, 15:35
спасиба!

Автор: OblommOff 4.9.2013, 16:09
Я бы посоветовал не менять обработку событий клавиатуры и мыши, а изменить взгляд на результат.
Например, если для TrackBar1 установлены свойства Min = 0 и Max = 1000, то в обработчике написать
Код

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  // вместо iVolume:= TrackBar1.Position пишем
  iVolume:= 1000 - TrackBar1.Position;
end;

Так меньше править и меньше будет неувязок с разной реакцией на мышь и кнопки вверх, вниз, PgUp, PgDn и прочее...

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