FlexGrid表格如何合并田字格??

WQ 2002-01-08 03:09:51
FlexGrid表格如何合并田字格??
...全文
328 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
WQ 2002-01-13
  • 打赏
  • 举报
回复
没办法
改用CGridCtrl
格兰特杨 2002-01-12
  • 打赏
  • 举报
回复
What i said is MSHFlexGrid, MSFlexGrid Do not support Merge cells.

I have no chinese input method, sorry
WQ 2002-01-11
  • 打赏
  • 举报
回复
to : hongtao924(浮云) bisc_sunny(中子) 
还是不对 :(
m_grid.SetRows(10);
m_grid.SetCols(0,10);
m_grid.SetFixedRows(2);
m_grid.SetFixedCols(2);
//
m_grid.SetMergeCells(2);
m_grid.SetMergeCol(0,true);
m_grid.SetMergeCol(1,true);
m_grid.SetMergeRow(0,true);
m_grid.SetMergeRow(1,true);
//
m_grid.SetRow(0);
m_grid.SetCol(0);
m_grid.SetText("123");
m_grid.SetRow(0);
m_grid.SetCol(1);
m_grid.SetText("123");
m_grid.SetRow(1);
m_grid.SetCol(0);
m_grid.SetText("123");
m_grid.SetRow(1);
m_grid.SetCol(1);
m_grid.SetText("123");
hongtao924 2002-01-11
  • 打赏
  • 举报
回复
我说一个简单的例子。不用写代码,希望能给你一点帮助。
我介绍用数据环境设计器创建一个层次结构,作为MSHFlexGrid控件的显示对象。
1、添加一个DATA ENVIRONMENT(数据环境设计器),点击CONNECTION->属性,建立数据连接,如NWIND.MDB。然后给CONNECTION添加COMMAND对象。
2、创建CUSTOMERS表和ORDER表之间的一个关系层次结构。这两个表是一对多的关系。后者的每个定单都对应着前者的一个客户。
3、数据源面板定义COMMAND对象的数据源,选择表->CUSTOMERS。
4、选择“添加子命令“,创建CUSTOMERS COMMAND对象的子COMMAND对象,它的数据源选为“ORDERS“。
5、在属性对话框中选择“关联“标签,在“父命令“框中选择CUSTOMERS COMMAND对象,在关联定义面板的父字段和子字段/参数都选择为CUSTOMERID对象,单击“添加“,这时创建的关联出现在下面的文本框中。这时我们就建立好了COMMAND对象的层次结构
6、把MSHFLEXGRID控件的DATASOURCE属性赋给数据环境即DATAENVIRONMENT1。最后关键的一步在快捷菜单中选择"检索结构“,这时在此控件中出现了COMMAND对象的层次结构。
7、运行工程,就可以清楚的从窗体中查看建立的层次结构了。

我说太麻烦了嘛。你最好去找这个控件的帮助看看。我这里没有这个控件的代码。所以。。。。。。
格兰特杨 2002-01-10
  • 打赏
  • 举报
回复
用MSHFlexGrid是对的。关键的用法是

MsHFlexGrid.MergeCells = RestrictRows '2
MsHFlexGrid.MergeCol(0) = True
查一查帮助里MergeCol的用法吧。Copy那么多帮助有什么用呢?
hongtao924 2002-01-10
  • 打赏
  • 举报
回复
用FlexGrid控件好像不好达到目的
用MSHFlexGrid控件,它在对包含字符串和图片的表格进行分类、合并及格式化时,具有完全的灵活性。但要讲得更具体点就太麻烦了。我只能给你一个提示,自己找找这个控件的资料吧
WQ 2002-01-10
  • 打赏
  • 举报
回复
:(
WQ 2002-01-10
  • 打赏
  • 举报
回复
to netcar
我是这个意思
+---+---+ +------+-----+
| 1| 1| | |
+---+---+ ===〉 | 1 |
| 1 | 1| | |
+---+---+ +------+-----+
WQ 2002-01-09
  • 打赏
  • 举报
回复
帮帮忙
netcar 2002-01-09
  • 打赏
  • 举报
回复
To:wei97081116(韦小宝)请查收邮件
WQ 2002-01-09
  • 打赏
  • 举报
回复
帮帮忙
WQ 2002-01-08
  • 打赏
  • 举报
回复
weiq@21cn.com
netcar 2002-01-08
  • 打赏
  • 举报
回复
给出邮箱,发给你个例子...
WQ 2002-01-08
  • 打赏
  • 举报
回复
帮帮忙
WQ 2002-01-08
  • 打赏
  • 举报
回复
up
WQ 2002-01-08
  • 打赏
  • 举报
回复
多层表头
+--------+---------+
| 1 | 3 |
+--------+---------+
| 2 | 4 |
+--------+---------+
dbcontrols 2002-01-08
  • 打赏
  • 举报
回复
对 Hierarchical FlexGrid 中的数据进行合并与排序


在本节的应用方案介绍了如何对 Hierarchical FlexGrid 中的数据进行排序和合并。在大多数情况下,可以通过将数据库下载到 Hierarchical FlexGrid 的方式来访问数据。不过,在这里示例数据通过“代码编辑器”窗口填写到 Hierarchical FlexGrid 的行与列中。

要建立数据显示

设置 Hierarchical FlexGrid 的各种属性。


建立数据。


定义各种子程序,以计算索引值和进行排序。


定义子程序,将数据(来自第二步)填入 Hierarchical FlexGrid。


允许控件切换到数据组织视图。
要完成本方案,请依次执行本节中的各个步骤。

设置控件的各种属性
使用下表中的设置值,设置列数与行数、字体信息,并为 Hierarchical FlexGrid 创建列标头。

MSHFlexGrid 控件

属性 设置值
Name Fg1
Cols 4
Rows 20
MergeCells 2 – Restrict Rows
FormatString <Region |<Product |<Employees |>Sales
FontName Arial


数据的排序与合并
使用下面的过程完成 Hierarchical FlexGrid 中的数据排序与合并。

排序与合并数据

创建一个数组用来存储数据。为此,首先在“代码编辑器”窗口的 Form_Load 事件中加入下面的子程序:
Sub Form_Load ()
Dim I As Integer
'创建数组。
For i = Fg1.FixedRows To Fg1.Rows - 1
'地区。
Fg1.TextArray(fgi(i, 0)) = RandomString(0)
'产品。
Fg1.TextArray(fgi(i, 1)) = RandomString(1)
'雇员。
Fg1.TextArray(fgi(i, 2)) = RandomString(2)
Fg1.TextArray(fgi(i, 3)) = _
Format(Rnd * 10000, "#.00")
Next

'设置合并。
Fg1.MergeCol(0) = True
Fg1.MergeCol(1) = True
Fg1.MergeCol(2) = True

'排序以查看效果。
DoSort
' Format Grid
Fg1.ColWidth(0) = 1000
Fg1.ColWidth(1) = 1000
Fg1.ColWidth(2) = 1000
Fg1.ColWidth(3) = 1000

End Sub
计算一个索引并完成排序。要这样做,请定义一个例程来计算索引并排序。该索引时同 TextArray 属性一起使用来对数据排序。插入下列例程计算索引:
Function Fgi (r As Integer, c As Integer) As Integer
Fgi = c + Fg1.Cols * r
End Function

Sub DoSort ()
Fg1.Col = 0
Fg1.ColSel = Fg1.Cols - 1
Fg1.Sort = 1 '一般为升序。
End Sub
将数据输入到您的 Hierarchical FlexGrid。要这样做,请定义一个例程使用示例数据充填 Hierarchical FlexGrid:
Function RandomString (kind As Integer)
Dim s As String
Select Case kind

Case 0 '地区。
Select Case (Rnd * 1000) Mod 5
Case 0: s = "1. Northwest"
Case 1: s = "2. Southwest"
Case 2: s = "3. Midwest"
Case 3: s = "4. East"
Case Else: s = "5. Overseas"
End Select

Case 1 '产品。
Select Case (Rnd * 1000) Mod 5
Case 0: s = "1. Chai"
Case 1: s = "2. Peppermint"
Case 2: s = "3. Chamomile"
Case Else: s = "4. Oolong"
End Select

Case 2 '雇员。
Select Case (Rnd * 1000) Mod 4
Case 0: s = "Clare"
Case 1: s = "Tiffany"
Case 2: s = "Sally"
Case Else: s = "Lori"
End Select
End Select
RandomString = s
End Function
如果在此时运行工程,则将显示窗体如下:



接着,您需要允许用户重新组织数据。也就是说,您必须允许 Hierarchical FlexGrid 切换数据组织视图。

通过添加下列例程重新组织数据,该例程将列拖动到新的位置。当用户按下鼠标按钮来触发 MouseDown 事件时,该例程用 Tag 属性保存列数目:
Sub Fg1_MouseDown (Button As Integer, _
Shift As Integer, X As Single, Y As Single)
Fg1.Tag = ""
If Fg1.MouseRow <> 0 Then Exit Sub
Fg1.Tag = Str(Fg1.MouseCol)
MousePointer = vbSizeWE
End Sub

添加下列例程以重新调整,当用户释放鼠标按钮触发 MouseUp 事件时,该例程重新调整列并将数据排序:
Sub Fg1_MouseUp (Button As Integer, Shift As _
Integer, X As Single, Y As Single)
MousePointer = vbDefault
If Fg1.Tag = "" Then Exit Sub
Fg1.Redraw = False
Fg1.ColPosition(Val(Fg1.Tag)) = Fg1.MouseCol
DoSort
Fg1.Redraw = True
End Sub

一旦完成了该方案中的过程,则当您在运行时无论合适将列拖动到新位置时,数据都重新组织。例如,如果您将 Employee 列拖动到左边,它将会以如下方式出现:


zgjchina1 2002-01-08
  • 打赏
  • 举报
回复
用Formal One 很容易实现这个需求!!

742

社区成员

发帖
与我相关
我的任务
社区描述
VB 版八卦、闲侃,联络感情地盘,禁广告帖、作业帖
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧