http://www.vbprobe.com/club/dispbbs.asp?boardID=30&ID=32984这里可以帖了图片的效果,请各位多多帮忙。关于 Ture dbgird . 用MSFlexGrid等实现也可c

解决方案 »

  1.   

    TDBGird应该能实现,以前好象做过类似的!
      

  2.   

    不过TDBGird我现在没有了!
    用MSFlexGrid应该也可以的!
      

  3.   

    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
      

  4.   

    http://expert.csdn.net/Expert/TopicView1.asp?id=2371492
      

  5.   

    Ture dbgird
    安装后带的例子里面好象就有这个。
      

  6.   

    Data Widgets 的SSDBGRID控件可以实现,http://www.shersoft.com
      

  7.   

    to qqyy_sj(♀天地无邪):
        我想要学TDBGrid.怕是太迟了.有人说用TDBGrid我一个月也未必做的出来.
        在MSFlexGrid中 "收缩"时 可以用 .removeitem 做. 
        1)但"展开"怎么做?  .additem ??  可以插入就好,而不是 add 
        2)合并后,判断 某个字段 占了 多少格.怎么做?  再用个循环?
    to watt(瓦特) 
       我看过7.0自带的例子, 没有这种效果?
      

  8.   

    用vsflexgrid一天就可学会哦 :)
    所以改用vsflexgrid吧
      

  9.   

    收缩让行高为0 放开行高复原
    MSHFlexGrid1.RowHeight(3) = 0
    合并为什么还要判断 某个字段 占了 多少格?
      

  10.   

    to yoki(小马哥)
       VSFlexGrid是 tree+grid的形式吧, 我看过例子里的。 不合适。to kinlin(小林)
       你的这种思想可行哦。MSHFlexGrid1.RowHeight(3) = 0  合并为什么还要判断 某个字段 占了 多少格?
      我不判断占了几行, 我又怎么样设哪几行的”行高“为0呢?  再有: 做双击后执行 .RowHeight(i) = 0 这行步怎么做,没有相应的事件呢?
          用什么方法代替
      

  11.   

    http://www.microsoft.com/china/msdn/technic/develop/ado.asp
    看看 分层目录结构指针和数据成形 那部分对你有没有用
    作出来的结果就是这样 http://www.microsoft.com/china/msdn/technic/develop/Image36.gif
      

  12.   

    展开
    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
      

  13.   

    你也可以用划分带区的方法,我觉的一定非常方便可我不会用
    Me.MSHFlexGrid1.ExpandAll
    Me.MSHFlexGrid1.CollapseAll
      

  14.   

    好了, 我基本实现效果,昨晚上做的,方法主要是是 kinlin(小林)提供的 .rowheight = 0....
    vb情报局的一版主就提供了 带区的方法. 根据MSDN完成不了.....
    没办法先这样用着.谢谢各位!
    另外100分给kinlin的.谢谢
    http://expert.csdn.net/Expert/topic/2382/2382415.xml?temp=.5810663
      

  15.   

    用 分层数据集的方法, 过段时间再将它做出来.谢谢 bdhh(Silent)