CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  控件

关于MSHFLEXGRID的单元格合并

楼主mylzw(芃)2005-01-02 15:36:25 在 VB / 控件 提问

有一个表,大约这样:  
  ----------------------------------  
  |标题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

相关问题

  • MSHFlexGrid能否合并单元格?
  • MSHFLEXGRID控件合并单元格
  • 合并单元格
  • 关于MSHFlexGrid中合并单元格的问题...
  • 如何只让mshflexgrid控件的fixed部分合并单元格。
  • [MSHFlexGrid]如何合并这样的单元格???
  • 怎样合并单元格?
  • listctrl合并单元格
  • StringGrid的单元格能合并么
  • 如何合并Excel单元格(急)

关键词

  • 内容
  • 控件
  • 数据
  • msflexgrid1
  • 标题
  • truemsflexgrid
  • mshflexgrid
  • cellalignment
  • 单元格
  • 合并

得分解答快速导航

  • 帖主:mylzw
  • NewPeople
  • tztz520
  • tztz520
  • tztz520

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo