MSFlexGrid合并单元 Private Sub Form_Load() MSHFlexGrid1.MergeCells = flexMergeRestrictRows MSHFlexGrid1.MergeCol(0) = True MSHFlexGrid1.MergeCol(1) = True End Sub MSFlexGrid设置各别字段颜色 Private Sub mColor_Click() ' 命令 For I = 1 To MSHFlexGrid1.Rows - 1 MSHFlexGrid1.Row = I MSHFlexGrid1.Col = 3 If MSHFlexGrid1.Text > 0 Then MSHFlexGrid1.CellForeColor = vbRed ' 红色 MSHFlexGrid1.Col = 2 MSHFlexGrid1.CellForeColor = vbRed ElseIf MSHFlexGrid1.Text < 0 Then MSHFlexGrid1.CellForeColor = vbGreen ' 绿色 MSHFlexGrid1.Col = 2 MSHFlexGrid1.CellForeColor = vbGreen End If Next End Sub
展开 Dim row1 As Long Dim str1 As String Dim i As Long str1 = Me.MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0) For i = MSHFlexGrid1.Row To 0 Step -1 If MSHFlexGrid1.TextMatrix(i, 0) <> str1 Then row1 = i + 1 Exit For End If Next i For i = row1 + 1 To Me.MSHFlexGrid1.Rows - 1 If MSHFlexGrid1.TextMatrix(i, 0) = str1 Then MSHFlexGrid1.RowHeight(i) = 0 Else Exit For End If Next i 收缩 For i = Me.MSHFlexGrid1.Row + 1 To Me.MSHFlexGrid1.Rows - 1 If Me.MSHFlexGrid1.RowHeight(i) = 0 Then Me.MSHFlexGrid1.RowHeight(i) = 255 Else Exit For End If Next i 如果你在MSHFlexGrid的最后一行之下双击也会触发DblClick事件而且选中行为最后一行,没关系你可以让最后一行为空,然后让MSHFlexGrid1.RowHeight(MSHFlexGrid1.Rows - 1) = 0
用MSFlexGrid应该也可以的!
Private Sub Form_Load()
MSHFlexGrid1.MergeCells = flexMergeRestrictRows
MSHFlexGrid1.MergeCol(0) = True
MSHFlexGrid1.MergeCol(1) = True
End Sub
MSFlexGrid设置各别字段颜色
Private Sub mColor_Click() ' 命令
For I = 1 To MSHFlexGrid1.Rows - 1
MSHFlexGrid1.Row = I
MSHFlexGrid1.Col = 3
If MSHFlexGrid1.Text > 0 Then
MSHFlexGrid1.CellForeColor = vbRed ' 红色
MSHFlexGrid1.Col = 2
MSHFlexGrid1.CellForeColor = vbRed
ElseIf MSHFlexGrid1.Text < 0 Then
MSHFlexGrid1.CellForeColor = vbGreen ' 绿色
MSHFlexGrid1.Col = 2
MSHFlexGrid1.CellForeColor = vbGreen
End If
Next
End Sub
安装后带的例子里面好象就有这个。
我想要学TDBGrid.怕是太迟了.有人说用TDBGrid我一个月也未必做的出来.
在MSFlexGrid中 "收缩"时 可以用 .removeitem 做.
1)但"展开"怎么做? .additem ?? 可以插入就好,而不是 add
2)合并后,判断 某个字段 占了 多少格.怎么做? 再用个循环?
to watt(瓦特)
我看过7.0自带的例子, 没有这种效果?
所以改用vsflexgrid吧
MSHFlexGrid1.RowHeight(3) = 0
合并为什么还要判断 某个字段 占了 多少格?
VSFlexGrid是 tree+grid的形式吧, 我看过例子里的。 不合适。to kinlin(小林)
你的这种思想可行哦。MSHFlexGrid1.RowHeight(3) = 0 合并为什么还要判断 某个字段 占了 多少格?
我不判断占了几行, 我又怎么样设哪几行的”行高“为0呢? 再有: 做双击后执行 .RowHeight(i) = 0 这行步怎么做,没有相应的事件呢?
用什么方法代替
看看 分层目录结构指针和数据成形 那部分对你有没有用
作出来的结果就是这样 http://www.microsoft.com/china/msdn/technic/develop/Image36.gif
Dim row1 As Long
Dim str1 As String
Dim i As Long
str1 = Me.MSHFlexGrid1.TextMatrix(MSHFlexGrid1.Row, 0)
For i = MSHFlexGrid1.Row To 0 Step -1
If MSHFlexGrid1.TextMatrix(i, 0) <> str1 Then
row1 = i + 1
Exit For
End If
Next i
For i = row1 + 1 To Me.MSHFlexGrid1.Rows - 1
If MSHFlexGrid1.TextMatrix(i, 0) = str1 Then
MSHFlexGrid1.RowHeight(i) = 0
Else
Exit For
End If
Next i
收缩
For i = Me.MSHFlexGrid1.Row + 1 To Me.MSHFlexGrid1.Rows - 1
If Me.MSHFlexGrid1.RowHeight(i) = 0 Then
Me.MSHFlexGrid1.RowHeight(i) = 255
Else
Exit For
End If
Next i
如果你在MSHFlexGrid的最后一行之下双击也会触发DblClick事件而且选中行为最后一行,没关系你可以让最后一行为空,然后让MSHFlexGrid1.RowHeight(MSHFlexGrid1.Rows - 1) = 0
Me.MSHFlexGrid1.ExpandAll
Me.MSHFlexGrid1.CollapseAll
vb情报局的一版主就提供了 带区的方法. 根据MSDN完成不了.....
没办法先这样用着.谢谢各位!
另外100分给kinlin的.谢谢
http://expert.csdn.net/Expert/topic/2382/2382415.xml?temp=.5810663