true dbgrid控件如何实现标题的分割

LsQian 2006-03-13 09:52:58

请问, ComponentOne 的true dbgrid控件如何实现标题的分割!
如: | 上月结存 |
| 数量 | 金额|

望各高手指点,谢谢!
...全文
80 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuhuahuang 2006-03-18
  • 打赏
  • 举报
回复
tdgrid有例子

edit--split
colorslife 2006-03-13
  • 打赏
  • 举报
回复
true dbgrid控件不是太好实现啊,

呵呵

设计表时字段名形式 上月结存.数量 和 上月结存.金额

建一个类 clsGridGroup,代码入下


Option Explicit

Public Sub GridGroup(ByRef rs As Recordset, ByRef TDBGrid1 As TDBGrid)
On Error GoTo ERRH

Dim FieldCount As Integer

Dim i As Integer, k As Integer

Dim SplitIdx As Integer

Dim Slt As Split

Dim pos As Integer

Dim strHead() As String '--如果列标题由两部分组成,则将其分离并存入数组

TDBGrid1.ClearFields '--清除Grid布局
TDBGrid1.AllowUpdate = False '--不允许修改

If Not (TDBGrid1.DataSource Is rs) Then Set TDBGrid1.DataSource = rs

TDBGrid1.Splits(0).Caption = " " '--设置Split空白标题

TDBGrid1.Splits(0).DividerStyle = dbgDarkGrayLine
TDBGrid1.Splits(0).MarqueeStyle = dbgHighlightRow
TDBGrid1.Splits(0).ScrollBars = 0 '--0-没有,1-水平滚动条,2-垂直,3-水平垂直,4-自动
TDBGrid1.Splits(0).ExtendRightColumn = True '--使最右面列紧贴右面

Call InvisibleColumns(TDBGrid1.Splits(0), rs.Fields.Count)

Do While i < rs.Fields.Count
pos = InStr(rs.Fields(i).Name, ".") '--查找 "." 的位置

If pos <> 0 Then

strHead = Split(rs.Fields.Item(i).Name, ".")

If TDBGrid1.Splits(SplitIdx).Caption <> strHead(0) Then

SplitIdx = SplitIdx + 1

Set Slt = TDBGrid1.Splits.Add(SplitIdx)

'----设置Split属性
Call SetPropertyOfSplit(Slt)

'----初始化时,使所有列都不可见
Call InvisibleColumns(Slt, rs.Fields.Count)

End If

Slt.Caption = strHead(0)
Slt.Columns(i).Caption = strHead(1)

ElseIf SplitIdx <> 0 And Len(Trim(TDBGrid1.Splits(SplitIdx).Caption)) <> 0 Then

SplitIdx = SplitIdx + 1

Set Slt = TDBGrid1.Splits.Add(SplitIdx)

'----设置Split属性
Call SetPropertyOfSplit(Slt)

'----初始化时,使所有列都不可见
Call InvisibleColumns(Slt, rs.Fields.Count)

Slt.Caption = " " '--设置Split空白标题

End If

TDBGrid1.Splits(SplitIdx).Columns(i).Visible = True
TDBGrid1.Splits(SplitIdx).Columns(i).HeadAlignment = 2 '--居中

i = i + 1

Loop
TDBGrid1.Splits(SplitIdx).ScrollBars = 2 '--垂直滚动条

Exit Sub

ERRH:

MsgBox Err.Description

End Sub

'----初始化时,使所有列都不可见
Private Sub InvisibleColumns(ByRef Slt As Split, ColCount As Integer)
Dim k As Integer
For k = 0 To ColCount - 1
Slt.Columns(k).Visible = False
Next
End Sub

'----设置Split属性
Private Sub SetPropertyOfSplit(ByRef Slt As Split)
Slt.RecordSelectors = False
Slt.DividerStyle = dbgDarkGrayLine
Slt.MarqueeStyle = dbgHighlightRow
Slt.ScrollBars = 0 '--0-没有,1-水平滚动条,2-垂直,3-水平垂直,4-自动
Slt.ExtendRightColumn = True
End Sub


1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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