MSHFlexGrid如何获取固定行的单击事件?

cjcoder 2005-12-19 03:44:59
如题
...全文
447 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
setve 2006-02-13
  • 打赏
  • 举报
回复
用MouseRow 和MouseCol属性来判断:这个办法蛮好的!我怎么没找到这个属性咧,冤枉花半天功夫去写了个控件,假固定行和固定列!
GoldFox 2006-02-10
  • 打赏
  • 举报
回复
一般单击固定行,会将当前行选定,在网格单击事件中,判断网格的Selection为选定当前行,则是单击固定行.
northwolves 2006-02-10
  • 打赏
  • 举报
回复

Private Sub Form_Load()
MSFlexGrid1.Cols = 5
MSFlexGrid1.Rows = 10
MSFlexGrid1.FixedRows = Int(InputBox("请输入固定行的行数:", "提示", 3))
End Sub

Private Sub MSFlexGrid1_Click()
If MSFlexGrid1.MouseRow >= 0 And MSFlexGrid1.MouseRow < MSFlexGrid1.FixedRows Then MsgBox "你单击了固定行(的第" & MSFlexGrid1.MouseRow + 1 & "行)!"
End Sub
vansoft 2006-02-10
  • 打赏
  • 举报
回复
我用Listview的報表式樣。
lgxysl 2006-02-10
  • 打赏
  • 举报
回复
用lgxgrid控件吧。
在http://lgxyslldw.512j.com
faysky2 2006-02-09
  • 打赏
  • 举报
回复
判断鼠标是点在固定行还是空白区或是数据区:

Dim curRow As Long, curCol As Long
Private Sub MSHFlexGrid1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
With MSHFlexGrid1
curRow = .Row
curCol = .Col
.Row = .Rows - 1
.Col = .cols - 1
If .ColPos(.cols - 1) + .CellWidth < x Or .RowPos(.Rows - 1) + .CellHeight < y Then
MsgBox "点在空白区"
Else
If .MouseRow = 0 Then
MsgBox "点中固定行"
ElseIf .MouseCol = 0 Then
MsgBox "点中固定列"
Else
MsgBox "数据区"
End If
End If
.Row = curRow
.Col = curCol
End With
End Sub
faysky2 2006-02-09
  • 打赏
  • 举报
回复
用MouseRow 和MouseCol属性来判断:

Private Sub MSHFlexGrid1_Click()
If MSHFlexGrid1.MouseRow = 0 Then
MsgBox "点中固定行"
ElseIf MSHFlexGrid1.MouseCol = 0 Then
MsgBox "点中固定列"
Else
MsgBox "非固定行列"
End If
End Sub
setve 2006-02-08
  • 打赏
  • 举报
回复
固定行没有单击事件,只能取消固定行,然后做一个假的固定行,如以上代码,对记录集的值重新绑定
setve 2006-02-08
  • 打赏
  • 举报
回复
'设置网格控件绑定方法
Private Sub MSHFGridBind()
Dim i, j As Integer '循环计数变量

With MSHFlexGrid1
.Rows = rs.RecordCount + 1
.Cols = rs.Fields.Count + 1
.FixedRows = 0
End With

'设置第一行单元格背景颜色(假固定行)
For i = 1 To MSHFlexGrid1.Cols - 1
MSHFlexGrid1.CellBackColor = RGB(212, 208, 200)
Next

'设置第一行单元格内容为字段名
For i = 0 To rs.Fields.Count - 1
MSHF.TextMatrix(0, i + 1) = rs(i).Name
Next i

'设置第二行起单元格内容为字段值,先行后列
For j = 1 To rs.RecordCount
If rs.EOF Then Exit Sub
For i = 0 To rs.Fields.Count - 1
'如果数据库中值为空,则赋值空字符串至网格控件内
If IsNull(rs(i).Value) Then
MSHF.TextMatrix(j, i + 1) = " "
Else
MSHF.TextMatrix(j, i + 1) = rs(i).Value
End If
Next i
rs.MoveNext
Next j
End Sub
cjcoder 2005-12-26
  • 打赏
  • 举报
回复
有人知道吗?
cjcoder 2005-12-19
  • 打赏
  • 举报
回复
难道就没有办法了吗?
cjcoder 2005-12-19
  • 打赏
  • 举报
回复
不行的,获取的row都是1而不是0
zhangzzg 2005-12-19
  • 打赏
  • 举报
回复
和单击事件是一个判断.row就行了。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧