有一个表,大约这样:
----------------------------------
|标题1  |  标题2 |  标题3 | 标题4|
----------------------------------
|内容1  |  内容2 |  内容3 | 内容4|
----------------------------------
|内容1  |  内容3 |  内容3 | 内容4|
----------------------------------
|内容1  |  内容4 |  内容3 | 内容4|
----------------------------------
我想将它合并为这样:
----------------------------------
|       |         标题2   |      |  
|标题1  |-----------------|标题4 |
|       |子标题1 |子标题2 |      |
----------------------------------
|内容1  |  内容2 |  内容3 | 内容4|
----------------------------------
|内容2  |  内容3 |  内容3 | 内容4|
----------------------------------
|内容3  |  内容4 |  内容3 | 内容4|
----------------------------------
我试过了MSHFLEXGRID所有关于合并的组合方式,都不行。
1、如果用自由合并,那么所有相同内容的单元格将合并,
比如“内容3” 、“内容4”列
2、如果使用行参照,那么标题4将得不到合并
3、列参照,和行列参照同上。我要的效果是:只自由合并头两行标题列,3~n行内容列的内容不进行合并。
不知mshflexgrid能否做到。
望高人指教~

解决方案 »

  1.   

    你的问题可以使用两个MSHFLEXGRID控件,一个用于标题,一个用于数据,标题就可以合并了,两个MSHFLEXGRID控件的同步可以使用Scroll事件
      

  2.   

    是啊。 这是个迂回的办法。
    我这里也有一个,就是更改所有相同内容单元格的内容,使其不相同。(末尾插入一个chr(10))我想知道有没有其它办法,最好直接点的 :)
      

  3.   

    '看一下这个例子.Private Sub Form_Load()
    MSFlexGrid1.Rows = 30
    MSFlexGrid1.Cols = 5
    MSFlexGrid1.FixedCols = 1
    MSFlexGrid1.FixedRows = 2MSFlexGrid1.ColWidth(0) = 500
    MSFlexGrid1.ColWidth(1) = 2000
    MSFlexGrid1.ColWidth(2) = 1000
    MSFlexGrid1.ColWidth(3) = 800
    MSFlexGrid1.ColWidth(4) = 3000MSFlexGrid1.MergeCells = flexMergeRestrictRows
    MSFlexGrid1.MergeCol(0) = True
    MSFlexGrid1.MergeRow(1) = True
    MSFlexGrid1.MergeRow(2) = TrueMSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 0
    MSFlexGrid1.Text = " "MSFlexGrid1.Row = 1
    MSFlexGrid1.Col = 0
    MSFlexGrid1.Text = " "MSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Text = "项目名"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Col = 2
    MSFlexGrid1.Text = "单位"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Col = 3
    MSFlexGrid1.Text = "最大值"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Col = 4
    MSFlexGrid1.Text = "最大值评估"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Row = 1
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Text = " "MSFlexGrid1.Col = 2
    MSFlexGrid1.Text = " "MSFlexGrid1.Col = 3
    MSFlexGrid1.Text = "最小值"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Col = 4
    MSFlexGrid1.Text = "最小值评估"
    MSFlexGrid1.CellAlignment = 4loadDate
    End SubPrivate Sub loadDate()
    Dim i As Integer, j As Integer
    MSFlexGrid1.Rows = 2
    MSFlexGrid1.Rows = 30For i = 2 To 29 Step 2
        MSFlexGrid1.TextMatrix(i, 0) = Space(i) & " "
        MSFlexGrid1.TextMatrix(i + 1, 0) = Space(i) & " "
        MSFlexGrid1.MergeRow(i + 1) = True
        
        MSFlexGrid1.TextMatrix(i + 1, 1) = Space(i) & " "
        MSFlexGrid1.TextMatrix(i + 1, 2) = Space(i) & " "
        
        MSFlexGrid1.TextMatrix(i, 1) = "测试数据"
        MSFlexGrid1.TextMatrix(i, 2) = "XXXX"
        MSFlexGrid1.TextMatrix(i, 3) = "8.5"
        MSFlexGrid1.TextMatrix(i + 1, 3) = "5.5"
         MSFlexGrid1.TextMatrix(i, 4) = "信息..."
        MSFlexGrid1.TextMatrix(i + 1, 4) = "当前信息...."
    Next iEnd Sub
      

  4.   

    多谢tztz520(午夜逛街)的参与。
    但您的例子并未符合我的需求。
      

  5.   

    '这样Private Sub Form_Load()
    MSFlexGrid1.Rows = 30
    MSFlexGrid1.Cols = 4
    MSFlexGrid1.FixedCols = 0
    MSFlexGrid1.FixedRows = 2
    MSFlexGrid1.MergeCells = 1
    MSFlexGrid1.MergeCol(0) = True
    MSFlexGrid1.MergeCol(3) = True
    MSFlexGrid1.MergeRow(0) = True
    MSFlexGrid1.MergeRow(1) = TrueMSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 0
    MSFlexGrid1.Text = "标题1"MSFlexGrid1.Row = 1
    MSFlexGrid1.Col = 0
    MSFlexGrid1.Text = "标题1"MSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Text = "标题2"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Row = 1
    MSFlexGrid1.Col = 1
    MSFlexGrid1.Text = "子标题1"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Row = 1
    MSFlexGrid1.Col = 2
    MSFlexGrid1.Text = "子标题2"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 2
    MSFlexGrid1.Text = "标题2"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Row = 0
    MSFlexGrid1.Col = 3
    MSFlexGrid1.Text = "标题4"
    MSFlexGrid1.CellAlignment = 4MSFlexGrid1.Row = 1
    MSFlexGrid1.Col = 3
    MSFlexGrid1.Text = "标题4"
    MSFlexGrid1.CellAlignment = 4End Sub
      

  6.   

    同意tztz520(午夜逛街) 关键是MergeCol的运用,我弄过一个比楼主要求还要过分的表格
      

  7.   

    搞了好长时间了非常感谢楼主和 tztz520(午夜逛街)
      

  8.   

    建议采用NewPeople(新新人类)的做法
      

  9.   

    感谢大家的参与。
    但“我要的效果是:只自由合并头两行标题列,3~n行内容列的内容不进行合并。”
    按照 tztz520(午夜逛街) 的办法,第0列和第4列中只要有相同内容的单元格就会合并。
      

  10.   

    如果使用两个MSHFLEXGRID控件,那么在行内容较多的情况下会出现滚动条重叠现象,是不是需要将用于标题的MSHFLEXGRID控件的ScrollBars属性设置为0 ?
    这样的话,标题旁边将没有滚动条~ ,看起来怪怪的。 ~O~
      

  11.   

    两个是比较难控制的.
    一个折衷的办法.你在添加数据的时候,如果是奇数行的时候就"数据"& space(1),偶数行就"数据"& space(2)
      

  12.   

    利用好mergecol和mergerow属性就很容易搞定的啊。