各位大侠:
你们好,先提前给大家拜年了。祝大家新年快乐,心想事成!
有个问题比较困扰我:
在使用mshflexgrid控件时,用到了双击事件,在这个事件过程中,需要判断双击了哪行哪列,据我所知,这个控件的行列计数应该都是从0开始吧,而这个0是不是应该从固定行列算起(程序中我设置了一个固定行和一个固定列)?但我在调试程序时发现双击固定行列(这时是不是应该算是第0行0列呀?)时也会执行操作(我的代码是当行列值大于等于1时才允许执行语句),不知为什么?哪位大侠能给我个圆满的解答,尽量详细些,最好有代码。谢谢!!!
你们好,先提前给大家拜年了。祝大家新年快乐,心想事成!
有个问题比较困扰我:
在使用mshflexgrid控件时,用到了双击事件,在这个事件过程中,需要判断双击了哪行哪列,据我所知,这个控件的行列计数应该都是从0开始吧,而这个0是不是应该从固定行列算起(程序中我设置了一个固定行和一个固定列)?但我在调试程序时发现双击固定行列(这时是不是应该算是第0行0列呀?)时也会执行操作(我的代码是当行列值大于等于1时才允许执行语句),不知为什么?哪位大侠能给我个圆满的解答,尽量详细些,最好有代码。谢谢!!!
Dim myRow As Long
Dim myCol As Long
myRow = MSHFlexGrid1.MouseRow
myCol = MSHFlexGrid1.MouseCol
If myRow = 0 Or myCol = 0 Then Exit Sub
MsgBox MSHFlexGrid1.TextMatrix(myRow, myCol)
End Sub
MSHFlexGrid1.Cols = 10
MSHFlexGrid1.Rows = 10
For i = 0 To MSHFlexGrid1.Rows - 1
For j = 0 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.TextMatrix(i, j) = i * jNext
NextEnd SubPrivate Sub MSHFlexGrid1_DblClick()
MsgBox "行数=" & MSHFlexGrid1.Row & " " & "列数=" & MSHFlexGrid1.Col
End Sub
先表示感谢:第一时间给我回复。我再说一下我的程序:
我想在双击这个控件的第一行(不是固定行,调试时ROW=1)或最后一行时,会弹出一个窗体,现在通过判断语句可以实现,但我发现在双击固定行时也会执行这个功能,用断点调试发现双击固定行时,发现这时ROW的值也是1,所以很郁闷。部分代码如下:
private sub mshflextgrid_dblclick()
if mshflextgrid.row=1 and mshflextgrid.col>0 or mshflextgrid.row=mshflextgrid.rows and mshflextgrid.col>0 then
其它执行语句
……
end sub
with mshfextgrid
if .col>0 then
if .row>0 then
'其他执行语句
end if
end if
end with
end sub
既然是lClick事件,取鼠标所在行列为当前行列:
myRow = MSHFlexGrid1.MouseRow
myCol = MSHFlexGrid1.MouseCol
然后if myRow=1 and mycol>0 ...这样判断
Private Sub MSHFlexGrid1_DblClick()
If MSHFlexGrid1.MouseRow > 0 And MSHFlexGrid1.MouseCol > 0 Then
MsgBox "行数=" & MSHFlexGrid1.Row & " " & "列数=" & MSHFlexGrid1.ColEnd If
End Sub