初めての質問です。
VB6.0でデータグリッドのスクロールイベントが発生した時、
垂直・水平をどのように判断すればよいか、わからないのです。
どなたか教えて頂けないでしょうか?
垂直・水平どちらをスクロールしても同じイベントが発生して
しまいます。
データグリッドのプロパティに変化があると思うのですが…。
Private Sub DataGrid1_Scroll(Cancel As Integer)
End Sub
スクロールの水平と垂直を見分けないといけない理由は
何でしょうか?
セレクトされているセルの移動を代用してはいけないで
すか?
RowColChange とか・・・
ご検討下さい。
以上。
どうしても・・・と言うことであれば、
メッセージフックや、サブクラス化して
DataGridのイベントを捕捉する必要があ
ると思います。
可能か否かについては、SPY++とかで、
実際にどのようなイベントが発生してい
るのか、調べないと解りませんが・・・
以上。
サブクラス化でできます。
サンプルとしては、やはりここですかネ〜
http://www1.harenet.ne.jp/cgi-bin/cgiwrap/unaap/lib/libsmp.cgi?lang=&function=&page=12
捕捉メッセージは、
Public Const WM_HSCROLL = &H114
Public Const WM_VSCROLL = &H115
です。
ご検討下さい。
以上。
> VB6.0でデータグリッドのスクロールイベントが発生した時、
> 垂直・水平をどのように判断すればよいか、わからないのです。
前回の表示位置と、今回の表示位置を比較してみては如何でしょう。
# 分割ペインを使っている場合は DataGrid.LeftCol等の替わりに、
# DataGrid.Splits(ペイン番号).LeftCol 等を利用してみてください。
Option Explicit
Private PreCol As Integer
Private PreRow As Variant
Private Sub DataGrid1_Scroll(Cancel As Integer)
With Me.DataGrid1
If PreCol <> .LeftCol Then
PreCol = .LeftCol
Me.Caption = "水平"
ElseIf PreRow <> .FirstRow Then
PreRow = .FirstRow
Me.Caption = "垂直"
Else
Me.Caption = "変化無し"
End If
End With
End Sub