- PR -

マウスのホイールでの移動行数の制御

1
投稿者投稿内容
さっちん
ベテラン
会議室デビュー日: 2006/09/13
投稿数: 64
投稿日時: 2007-07-04 15:57
いつも参考にさせていただいております。

VB2005で、マウスのホイールでの移動行数を
動的に変更は可能なのでしょうか?

コントロールパネルのマウスで設定変更可能なのは
知っているのですが、動的に変えたい部分があるのです。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-07-04 17:41

コントロールパネルで設定できるホイールの移動量を
.Netから動的に変える方法は知りません。

移動速度を、
あるコントロールに対してだけ、
適当な倍率で、
動的に、
変更する場合は、
以下の様に継承すればできます。

コード:
Public Class CustomWheelTextBox
    Inherits TextBox

    Private pWheelMag As Single = 1

    Public Property WheelMag() As Single
        Get
            Return pWheelMag
        End Get
        Set(ByVal value As Single)
            pWheelMag = value
        End Set
    End Property

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If m.Msg = &H20A Then
            Dim d As Integer
            d = (m.WParam.ToInt32 \ 65536)
            d *= pWheelMag
            m.WParam = New IntPtr(d * 65536 + (m.WParam.ToInt32 Mod 65536))
        End If
        MyBase.WndProc(m)
    End Sub

End Class




さっちん
ベテラン
会議室デビュー日: 2006/09/13
投稿数: 64
投稿日時: 2007-07-04 18:06
れいさんありがとうございます。

あるコントロールだけでOKです。
やろうとしてることは、スプレッドの
スクロールバーの移動量を
変更しようと考えてます。

できますでしょうか?
聞いてばかりですいません。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-07-04 18:08

>やろうとしてることは、スプレッドの

スプレッドって
なんですか?
さっちん
ベテラン
会議室デビュー日: 2006/09/13
投稿数: 64
投稿日時: 2007-07-04 18:11
グレープシティーのSPREADというコンポーネントを使ってます。
標準にあるデータグリッドみたいなものですね。
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-07-04 18:20

>グレープシティーのSPREADというコンポーネントを使ってます。

使ったことが無いのでわかりません。
サードパーティのコンポーネントをお使いなのでしたら
製作元に訊くのが確実でしょう。

たぶん前述のように継承すれば動くとは思います。
動作結果のご報告をお待ちしています。

ちなみに、移動量を減らすという目的でしたら、
いい結果は得られないかもしれません。

Windowsの既定のインストールでは、
120単位につき3行スクロールするようになっています。
40単位で1行ではないので、
120未満では1行もスクロールしません。
前記コードでは、スクロール単位(?)を定数倍しているだけですので、
3行スクロールを1行スクロールに変更したりはできません。

1

スキルアップ/キャリアアップ(JOB@IT)