dポイントプレゼントキャンペーン実施中!

VB6SP6を用いています。MSFlexGridですが、固定行をラベルに用いています。このグリッドをクリックして処理を行っています。固定行では、クリックを無視してほしいのです。固定行をクリックしても、grid.Rowの値は0ではなく、押してもいない、1が返ってきます。本来はクリックしたくない場所ですが、処理を行う1行目をクリックしたことと同じになってしまいます。
ラベル部分をクリックしないようにと伝えていますが、やはり具合が悪いです。
良い、回避方法はないでしょうか。

A 回答 (3件)

#2です。


デバッグはどうおこなっていますか?MouseRowはデバッグ中にマウスが
動くと答えが変わったりするので。
私の方ではMsFlexGridをFormに貼り付けてテストしたところ、
うまく切り抜けてるようです。
以下に貼り付けますので参考までに。
あとMouseRowについてはヘルプもみて、どんな値が返るのか理解してくださいね。
(私の環境 WindowsXP VB6SP2)
Private Sub Form_Load()
With MSFlexGrid1
.Rows = 10
.Cols = 10
.FixedCols = 2
.FixedRows = 2
End With
End Sub

Private Sub MSFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
With MSFlexGrid1
If .MouseRow < 2 Then Exit Sub 'ここでは2行を固定行にしているので、固定行の位置の時、クリック処理をせず抜けるようにしています。固定行の時はMsgboxの処理はしないようにしています。
MsgBox .MouseRow
End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
解決できました。

お礼日時:2006/03/27 10:31

クリックイベント等で、


MouseCol MouseRowプロパティで判定されてはどうでしょうか?
ヘルプでは、現在のマウス ポインタの位置を行と列の座標で
返します。とあるので、その値が、durian_skさんが固定行としている
行であれば、クリック処理をしないようにするとか・・・
    • good
    • 0
この回答へのお礼

ありがとうございます。
値を見たのですが、MouseRowがどこを押しても
14という値なのです。
クリック処理をしないようというのはどのようにするのでしょうか?

お礼日時:2006/03/20 07:29

conX、conYの値は質問者で求めて下さい。



Dim mlngX As Single
Dim mlngY As Single
Const conX = 90
Const conY = 90

Private Sub MSHFlexGrid1_Click()
  MsgBox MSHFlexGrid1.Row * Abs((mlngY > conY) * (mlngX > conX))
End Sub

Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  mlngX = x
  mlngY = y
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!