帮你试了一下就用VSflexgrid里面的一个例子改过来的,只要把vsflexgrid改为msflexgrid就行,然后自己画几根线,效果不是很理想,但是你可以调整一下detail的高度就可以得到目的。
分是小事,给我我也不客气,呵呵。
你把下面的代码放到一个AR设计器中,然后调用时写如下代码:
dim AR as new 你的AR设计器名
set AR.grid=你的MSflexgrid名
AR.show vbmodal
----------------------------------------------------------------------------
Option Explicit
Private m_grid As MSFlexGrid
Private bDone As Boolean
Property Set grid(ByVal grd As MSFlexGrid)
Dim ctl As Object
Dim iLeft As Integer
Dim i As Integer
Dim Li As Object
Dim Si As Object
Dim Li2 As Object
Dim si2 As Object
Set m_grid = grd
For i = 1 To m_grid.Cols - 1
Set ctl = Detail.Controls.Add("DDActiveReports2.Field")
Set Si = Detail.Controls.Add("DDactivereports2.line")
iLeft = iLeft + ctl.Width
PrintWidth = iLeft
Next i
Set Li = Detail.Controls.Add("DDactivereports2.line")
Set Li2 = Detail.Controls.Add("DDActivereports2.line")
'定义顶线'
Li.X1 = 0
Li.X2 = iLeft
Li.Y1 = 0
Li.Y2 = 0
'定义底线
Li2.X1 = 0
Li2.X2 = iLeft
Li2.Y1 = Detail.Height + 85
Li2.Y2 = Detail.Height + 85
'定义最后一根坚线
Set si2 = Detail.Controls.Add("ddactivereports2.line")
si2.X1 = iLeft
si2.X2 = iLeft
si2.Y1 = 0
si2.Y2 = Detail.Height + 85
End Property
Private Sub ActiveReport_FetchData(EOF As Boolean)
Static iRow As Integer
Dim ctl As Object
Dim ctl2 As Object
Dim i As Integer
If iRow < m_grid.Rows Then
For Each ctl In Detail.Controls
If TypeName(ctl) = "Field" Then
Detail.Height = m_grid.CellHeight
m_grid.Row = iRow
m_grid.Col = ctl.Tag
ctl.Font.Size = m_grid.CellFontSize
Fields(ctl.Name).Value = m_grid.Text
End If
Next
iRow = iRow + 1
EOF = False
Else
Dim si3 As Object
Set si3 = Detail.Controls.Add("DDactivereports2.line")
'定义底线
si3.X1 = 0
si3.X2 = Me.PrintWidth
si3.Y1 = Detail.Height - 12
si3.Y2 = Detail.Height - 12
EOF = True
End If
End Sub
Private Sub ActiveReport_Initialize()
SetPrintCHI Me
End Sub
Private Sub SetPrintCHI(Arvreport As Object)
Arvreport.ToolbarVisible = True
Arvreport.Toolbar.DisplayToolTips = True