用Formal One 很容易实现这个需求!!
解决方案 »
- 求报表数据分析程序设计思路?
- 高手请进:这张图表怎么做,感觉有点难度
- 如何◆实时◆监视某一程序的运行...?要保证不漏掉.
- 用api开关光驱门的时候若碰到有多个光驱怎么办
- 问MSFLEXGRID控件的问题,谢谢!
- 请教各位高手:VB如何控制EXCEL文档的列宽,以及如何更改字体颜色,和有设置边框线。
- 得到线程ID后,如何再得到线程名称?
- 如何实现两个表的关联
- 你会api吗?
- 用data控件做数据源,用textbox输入记录,请问怎样用datareport打印出刚增加的新记录???
- 请蓝鹰看http://www.csdn.net/Expert/topic/473/473940.shtm
- 请高手们帮我看看这么几个问题???
在本节的应用方案介绍了如何对 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) = 1000End Sub
计算一个索引并完成排序。要这样做,请定义一个例程来计算索引并排序。该索引时同 TextArray 属性一起使用来对数据排序。插入下列例程计算索引:
Function Fgi (r As Integer, c As Integer) As Integer
Fgi = c + Fg1.Cols * r
End FunctionSub 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 kindCase 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 SelectCase 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 SelectCase 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 列拖动到左边,它将会以如下方式出现:
我是这个意思
+---+---+ +------+-----+
| 1| 1| | |
+---+---+ ===〉 | 1 |
| 1 | 1| | |
+---+---+ +------+-----+
用MSHFlexGrid控件,它在对包含字符串和图片的表格进行分类、合并及格式化时,具有完全的灵活性。但要讲得更具体点就太麻烦了。我只能给你一个提示,自己找找这个控件的资料吧
MsHFlexGrid.MergeCol(0) = True
查一查帮助里MergeCol的用法吧。Copy那么多帮助有什么用呢?
还是不对 :(
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");
我介绍用数据环境设计器创建一个层次结构,作为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、运行工程,就可以清楚的从窗体中查看建立的层次结构了。我说太麻烦了嘛。你最好去找这个控件的帮助看看。我这里没有这个控件的代码。所以