请给我一个active report打印msflexgrid的完美方案,我送400分。帮帮忙!

hnzzs 2003-10-18 10:48:55
要求:
1、就像AReport里面打印msflexgird的例子一样,但是要能打印表格线。
2、一条记录不会分成两页打,就是一行只打在一页上,不能上一页打一半,一下页打一半。
求强人帮帮我。
不分分,如果可以的话,马上把另外300分送上,绝不食言!
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnzzs 2003-10-19
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2372/2372962.xml?temp=.3783075
http://expert.csdn.net/Expert/topic/2372/2372961.xml?temp=.4346125
http://expert.csdn.net/Expert/topic/2372/2372982.xml?temp=.3992731
再次表示感谢!
hnzzs 2003-10-19
  • 打赏
  • 举报
回复
谢谢,太感谢你了。5555
planetike 2003-10-19
  • 打赏
  • 举报
回复
帮你试了一下就用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")

'如果这里为True的话,会出现空隙
ctl.WordWrap = False
ctl.Tag = i
ctl.Left = iLeft
ctl.Top = 50
ctl.Width = m_grid.ColWidth(i)
ctl.Font.Name = "宋体"
' MsgBox ctl.Name
Fields.Add ctl.Name
ctl.DataField = ctl.Name
'定义左竖线
Si.X1 = iLeft
Si.X2 = iLeft
Si.Y1 = 0
Si.Y2 = Detail.Height + 85

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

Arvreport.Toolbar.Tools(0).Caption = "目录"
Arvreport.Toolbar.Tools(0).Tooltip = "目录"

Arvreport.Toolbar.Tools(2).Caption = "打印"
Arvreport.Toolbar.Tools(2).Tooltip = "打印预览"

Arvreport.Toolbar.Tools(4).Caption = "拷贝"
Arvreport.Toolbar.Tools(4).Tooltip = "拷贝"

Arvreport.Toolbar.Tools(6).Caption = "查找"
Arvreport.Toolbar.Tools(6).Tooltip = "查找"

Arvreport.Toolbar.Tools(8).Caption = "单页"
Arvreport.Toolbar.Tools(8).Tooltip = "单页"
Arvreport.Toolbar.Tools(9).Caption = "多页"
Arvreport.Toolbar.Tools(9).Tooltip = "多页"

Arvreport.Toolbar.Tools(11).Caption = "缩小"
Arvreport.Toolbar.Tools(11).Tooltip = "预览缩小"
Arvreport.Toolbar.Tools(12).Caption = "放大"
Arvreport.Toolbar.Tools(12).Tooltip = "预览放大"

Arvreport.Toolbar.Tools(15).Caption = "上一页"
Arvreport.Toolbar.Tools(15).Tooltip = "上一页"
Arvreport.Toolbar.Tools(16).Caption = "下一页"
Arvreport.Toolbar.Tools(16).Tooltip = "下一页"

Arvreport.Toolbar.Tools(19).Caption = "后退"
Arvreport.Toolbar.Tools(19).Tooltip = "后退"
Arvreport.Toolbar.Tools(20).Caption = "前进"
Arvreport.Toolbar.Tools(20).Tooltip = "前进"

End Sub

809

社区成员

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

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