关于MSHFLEXGRID的单元格合并
有一个表,大约这样:
----------------------------------
|标题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能否做到。
望高人指教~
问题点数:200、回复次数:14Top
1 楼NewPeople(新新人类)回复于 2005-01-02 16:04:43 得分 50
你的问题可以使用两个MSHFLEXGRID控件,一个用于标题,一个用于数据,标题就可以合并了,两个MSHFLEXGRID控件的同步可以使用Scroll事件Top
2 楼mylzw(芃)回复于 2005-01-02 16:13:06 得分 0
是啊。 这是个迂回的办法。
我这里也有一个,就是更改所有相同内容单元格的内容,使其不相同。(末尾插入一个chr(10))
我想知道有没有其它办法,最好直接点的 :)Top
3 楼mylzw(芃)回复于 2005-01-10 16:25:41 得分 0
不会吧。~~ 凉贴??~Top
4 楼tztz520(午夜逛街)回复于 2005-01-10 16:31:30 得分 50
'看一下这个例子.
Private Sub Form_Load()
MSFlexGrid1.Rows = 30
MSFlexGrid1.Cols = 5
MSFlexGrid1.FixedCols = 1
MSFlexGrid1.FixedRows = 2
MSFlexGrid1.ColWidth(0) = 500
MSFlexGrid1.ColWidth(1) = 2000
MSFlexGrid1.ColWidth(2) = 1000
MSFlexGrid1.ColWidth(3) = 800
MSFlexGrid1.ColWidth(4) = 3000
MSFlexGrid1.MergeCells = flexMergeRestrictRows
MSFlexGrid1.MergeCol(0) = True
MSFlexGrid1.MergeRow(1) = True
MSFlexGrid1.MergeRow(2) = True
MSFlexGrid1.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 = 4
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "单位"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "最大值"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = "最大值评估"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Row = 1
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = " "
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = " "
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "最小值"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = "最小值评估"
MSFlexGrid1.CellAlignment = 4
loadDate
End Sub
Private Sub loadDate()
Dim i As Integer, j As Integer
MSFlexGrid1.Rows = 2
MSFlexGrid1.Rows = 30
For 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 i
End SubTop
5 楼mylzw(芃)回复于 2005-01-10 19:11:36 得分 0
多谢tztz520(午夜逛街)的参与。
但您的例子并未符合我的需求。Top
6 楼tztz520(午夜逛街)回复于 2005-01-10 20:11:40 得分 50
'这样
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) = True
MSFlexGrid1.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 = 4
MSFlexGrid1.Row = 1
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "子标题1"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Row = 1
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "子标题2"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "标题2"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "标题4"
MSFlexGrid1.CellAlignment = 4
MSFlexGrid1.Row = 1
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = "标题4"
MSFlexGrid1.CellAlignment = 4
End SubTop
7 楼aohan(aohan)回复于 2005-01-10 21:16:29 得分 0
同意tztz520(午夜逛街)
关键是MergeCol的运用,我弄过一个比楼主要求还要过分的表格Top
8 楼VB_MSSQL()回复于 2005-01-11 08:33:42 得分 0
搞了好长时间了非常感谢楼主和 tztz520(午夜逛街)Top
9 楼LuBingLin(为什么?)回复于 2005-01-11 12:06:27 得分 0
建议采用NewPeople(新新人类)的做法
Top
10 楼mylzw(芃)回复于 2005-01-12 18:57:07 得分 0
感谢大家的参与。
但“我要的效果是:只自由合并头两行标题列,3~n行内容列的内容不进行合并。”
按照 tztz520(午夜逛街) 的办法,第0列和第4列中只要有相同内容的单元格就会合并。Top
11 楼mylzw(芃)回复于 2005-01-12 19:06:46 得分 0
如果使用两个MSHFLEXGRID控件,那么在行内容较多的情况下会出现滚动条重叠现象,是不是需要将用于标题的MSHFLEXGRID控件的ScrollBars属性设置为0 ?
这样的话,标题旁边将没有滚动条~ ,看起来怪怪的。 ~O~Top
12 楼tztz520(午夜逛街)回复于 2005-01-12 19:45:16 得分 50
两个是比较难控制的.
一个折衷的办法.
你在添加数据的时候,如果是奇数行的时候就"数据"& space(1),偶数行就"数据"& space(2)Top
13 楼Programer_Zjw(阿伟)回复于 2005-01-13 00:14:50 得分 0
利用好mergecol和mergerow属性就很容易搞定的啊。Top
14 楼WallesCai(女人之美,在于蠢得无怨无悔,男人之美,在于撒谎撒得白日见鬼)回复于 2005-01-13 08:29:13 得分 0
唉,来晚啦,只好接分啦。Top




