喫茶XRAYトップページ

[スレッド全体
]

[10950] マウスホイールを無効にする返信 削除
2017/3/23 (木) 14:10:43 Mr.XRAY
マウスホイールによるスクロールを無効にするというのであれば,
例えば以下のようにすると可能です.
コードは,フォーム上の TListBox のスクロールの制御です.

マウスホイールの機能を無効にするとなると,システム的なのかな ?
これは分かりません.
動作確認は Windows 7 U64(SP1) + Delphi XE(UP1) Pro てす.


procedure TForm1.FormCreate(Sender: TObject);
var
  i : Integer;
begin
  ListBox1.Items.BeginUpdate;
  for i := 0 to 100 do begin
    ListBox1.Items.Add(IntToStr(i));
  end;
  ListBox1.Items.EndUpdate;
end;

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  if ActiveControl.Handle = ListBox1.Handle then begin
    //引数のHandledをTrueにすると処理したことになる
    //つまりMouseWheelイベントは実行済みということになるので
    //マウスホイールではスクロールしない
    Handled := CheckBox1.Checked;
  end;
end;




[10953] Re:マウスホイールを無効にする返信 削除
2017/3/23 (木) 19:28:56 Mr.XRAY
> マウスホイールの機能を無効にするとなると,システム的なのかな ?

こんなのもありますけど.
「くるくる」さんの反応は,私には理解不可能です.
「それなりに」とは一体どういう状態なのか ?
スクロールの動作とフォーカスの移動とはどういう関係なのか ?

[ComboBoxをホイールでスクロールさせないようにするには? ]
http://www.papy.in/bbs/delphi/200509/05090044.html


[10955] Re2:マウスホイールを無効にする返信 削除
2017/3/24 (金) 08:29:29 SO
▼ Mr.XRAYさん
> > マウスホイールの機能を無効にするとなると,システム的なのかな ?
>
> こんなのもありますけど.
> 「くるくる」さんの反応は,私には理解不可能です.
> 「それなりに」とは一体どういう状態なのか ?
> スクロールの動作とフォーカスの移動とはどういう関係なのか ?
>
> [ComboBoxをホイールでスクロールさせないようにするには? ]
> http://www.papy.in/bbs/delphi/200509/05090044.html


あんまり良く読んでなく、想像ですが、アレじゃないでしょうか?

コンボボックスでリストが表示されていない状態で、
フォーカスがあるとして、ホイールをくるくるすると、
コンボボックスがスクロール。。。じゃなく、別の値を選択するっていうやつ?

[10957] Re3:マウスホイールを無効にする返信 削除
2017/3/24 (金) 09:56:27 おかぽん
▼ SOさん
> コンボボックスでリストが表示されていない状態で、
> フォーカスがあるとして、ホイールをくるくるすると、
> コンボボックスがスクロール。。。じゃなく、別の値を選択するっていうやつ?

ドロップダウン中だけ、ホイールで動いてほしいってやつですかね?

procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
  WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
begin
  if ActiveControl = ComboBox1 then Handled := not ComboBox1.DroppedDown;
end;


[10958] Re4:マウスホイールを無効にする返信 削除
2017/3/24 (金) 10:35:42 Mr.XRAY
▼ おかぽんさん

> procedure TForm1.FormMouseWheel(Sender: TObject; Shift: TShiftState;
>   WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
> begin
>   if ActiveControl = ComboBox1 then Handled := not ComboBox1.DroppedDown;
> end;


なるほど,そうですか.
私がレスしたコードだと,ドロップダウンリストを表示している時,
マウスホイールが使えないですね.


[10959] Re5:マウスホイールを無効にする返信 削除
2017/3/24 (金) 10:53:24 Mr.XRAY
>ComboBoxのText部の右横のボタン(リストを表示させるボタン)で
>リストを閉じたときComboBoxのText部にフォーカスが移ってしまいます。


これは通常の動作だと思うんですが.
何かありましたっけ.

# 質問そのものは,マウスホイールの動作のことなのに,関係ないと思うのですが,
# こういう書き方をされると,私がレスしたコードのせいに聞こえる...
# 言っておきますが,リストを閉じなくても,ドロップダウン用のボタンを
# クリックした時点で TComboBox にフォーカス移動するハズです.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82