tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルAxMshFlexGridでホイールが効かない
記事No7038
投稿日: 2008/02/18(Mon) 20:19
投稿者よっくん
はじめまして。
VB2005で、AxMshFlexGridを使用しているのですが
マウスホイールでスクロールさせようとしても
どうやってもスクロールしません。

元のプログラムはVB6で作成し
VB2005に変換されたものなのですが、
VB6時代からスクロールしませんでした。

過去ログ等を拝見する限りでは、スクロールしないほうが
おかしいようなのですが、どこを確認していいかわかりません。
インターネットエクスプローラー等、ほかのアプリでは
問題なくスクロールしております。
(ちなみにノートパソコンにUSBマウスを接続しております)

MouseWheelに何か記述が必要なのかと思ったのですが
そもそもAxMshFlexGridには MouseWheelイベントがないようで…。

今日からVB2005に乗り換えて いきなり頓挫しております…。
すみませんが、「ここを確認!」等ありましたら
ご指摘頂けないでしょうか。
宜しくお願いいたします。

[ツリー表示へ]
タイトルRe: AxMshFlexGridでホイールが効かない
記事No7039
投稿日: 2008/02/18(Mon) 21:25
投稿者花ちゃん
> 過去ログ等を拝見する限りでは、スクロールしないほうが
> おかしいようなのですが、どこを確認していいかわかりません。

そのような事どこに書いていたでしょうか?
http://tinyurl.com/2ojkce
http://support.microsoft.com/default.aspx?scid=kb;ja;837910

1.マウスドライバー入れ替える
2.フリーソフトのどこでもホイールを使う
3.スクロール可能なマウスと交換する

ノートパソコンの場合、タッチパッドのドライバー等が邪魔をしてドライバーの
入れ替え等がうまく出来ない場合があります。
因みに、私は、2.と3.を併用しています。

[ツリー表示へ]
タイトルRe: AxMshFlexGridでホイールが効かない
記事No7040
投稿日: 2008/02/18(Mon) 21:52
投稿者魔界の仮面弁士
> VB2005で、AxMshFlexGridを使用しているのですが
> マウスホイールでスクロールさせようとしても
> どうやってもスクロールしません。
その対象となるコントロール自体が、
 「ホイールが操作された時に、スクロール(など)を行う」
ように作られていない限り、スクロールする事はありません。
そして MSHFlexGrid は、ホイール機能を実装していません。

その一方で幾つかのマウスドライバやユーティリティは、ホイール操作を
PageUp/PageDown や、スクロールバー操作の処理などに変換してから
コントロールに渡すことで、擬似的にスクロール対応させている物もあります。
(どこでもホイールや、初期の Microsoft IntelliPoint など)


> 過去ログ等を拝見する限りでは、スクロールしないほうが
> おかしいようなのですが、どこを確認していいかわかりません。
スクロールしない方が正常です。(どこでもホイールなどの)ソフトで、
ホイール操作をスクロールメッセージに変換しないと無理ですね。


> インターネットエクスプローラー等、ほかのアプリでは
> 問題なくスクロールしております。
IE や Office は、スクロール操作に対応しているアプリケーションです。
(それらとて、初期のバージョンではスクロールに対応していませんでした)


> MouseWheelに何か記述が必要なのかと思ったのですが
> そもそもAxMshFlexGridには MouseWheelイベントがないようで…。
たとえば、このようにして実装できます。

Partial Public Class Form1
    Public Class SampleGrid
        Inherits AxMSHierarchicalFlexGridLib.AxMSHFlexGrid
        Public Shadows Event MouseWheel As MouseEventHandler
        Protected Overrides Sub OnMouseWheel(ByVal e As MouseEventArgs)
            RaiseEvent MouseWheel(Me, e)
            MyBase.OnMouseWheel(e)
        End Sub
    End Class

    Private WithEvents AxMSHFlexGrid1 As SampleGrid
    Private Sub Form1_Load(ByVal sender As System.Object, _
      ByVal e As System.EventArgs) Handles MyBase.Load
        AxMSHFlexGrid1 = New SampleGrid()
        AxMSHFlexGrid1.Dock = DockStyle.Fill
        Controls.Add(AxMSHFlexGrid1)

        FillSampleData(AxMSHFlexGrid1)
    End Sub

    Private Sub AxMSHFlexGrid1_MouseWheel(ByVal sender As Object, _
      ByVal e As MouseEventArgs) Handles AxMSHFlexGrid1.MouseWheel
        Dim row As Integer = AxMSHFlexGrid1.TopRow - _
            (e.Delta \ SystemInformation.MouseWheelScrollDelta)
        If row < AxMSHFlexGrid1.FixedRows Then
            row = AxMSHFlexGrid1.FixedRows
        ElseIf row > AxMSHFlexGrid1.Rows - 1 Then
            row = AxMSHFlexGrid1.Rows - 1
        End If
        AxMSHFlexGrid1.TopRow = row
    End Sub

    Private Shared Sub FillSampleData( _
      ByVal grid As AxMSHierarchicalFlexGridLib.AxMSHFlexGrid)
        With grid
            .Rows = 200
            '.Cols = 20
            .set_Cols(20)
            Dim Cells As New System.Text.StringBuilder()
            For row As Integer = 0 To 199
                For col As Integer = 0 To 19
                    Cells.Append(String.Format("{0,3}-{1,3}", row, col))
                    Cells.Append(vbTab)
                Next
                Cells.AppendLine()
            Next
            .Row = 0
            .Col = 0
            .RowSel = 199
            .ColSel = 19
            .Clip = Cells.ToString()
            .RowSel = 0
            .ColSel = 0
        End With
    End Sub
End Class

[ツリー表示へ]
タイトルRe^2: AxMshFlexGridでホイールが効かない
記事No7043
投稿日: 2008/02/19(Tue) 10:01
投稿者よっくん
アドバイスありがとうございます。

花ちゃん様
>> 過去ログ等を拝見する限りでは、スクロールしないほうが
>> おかしいようなのですが、どこを確認していいかわかりません。

>そのような事どこに書いていたでしょうか?

「マウスのホイールでDataGridViewをスクロール」
という投稿を読んで、普通は動くものなんだと
勝手に解釈しておりました…。

ちなみにマウスはMicrosoftの5つボタンマウスを使用しております。
簡単なところで、マウス交換やタッチパッド設定あたりを
色々見直してみようと思います。



魔界の仮面弁士様
ソースコードありがとうございます。
ホイールによるスクロールは奥深いんですね…。

>その一方で幾つかのマウスドライバやユーティリティは、ホイール操作を
>PageUp/PageDown や、スクロールバー操作の処理などに変換してから
>コントロールに渡すことで、擬似的にスクロール対応させている物もあります。

マウスによっても処理の仕方が違うとは知りませんでした。
勉強になります。

ありがとうございました。

[ツリー表示へ]