以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]专业报表,控制每页打印行数时,为什么没有办法定位 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158038) |
-- 作者:5159518 -- 发布时间:2020/11/5 16:56:00 -- [求助]专业报表,控制每页打印行数时,为什么没有办法定位 Dim tb As Table = Tables("表A") Dim prs As Integer = 8 \'每页20行 Dim doc As New PrintDoc() \'定义一个报表 doc.PageSetting.Width = 240 \'纸张宽度为240毫米 doc.PageSetting.Height = 140 \'纸张高度为140毫米 Doc.PageSetting.LeftMargin = 0 \'设置左边距 Doc.PageSetting.RightMargin = 0 \'设置右边距 Doc.PageSetting.TopMargin = 0 \'设置上边距 Doc.PageSetting.BottomMargin = 0 \'设置下边距 For p As Integer = 0 To math.Ceiling(tb.Rows.Count / prs) - 1 Dim ra As New prt.RenderArea \'定义一个容器 \'ra.X = 0 \'指定容器水平位置 \'ra.y = 24 \'指定容器垂直位置 Dim rt As prt.RenderText \'定义一个文本对象 rt = New prt.RenderText() \'创建文本对象(序列号) rt.Width = "Auto" \'自动设置宽度 rt.Style.Font = New Font("宋体", 12, FontStyle.Regular) \'设置文本字体,宋体,12磅,普通 rt.Style.TextAlignHorz = prt.AlignHorzEnum.Left \'水平靠左 rt.Text = "NO-20201104001 " \'设置文本对象的内容 rt.X = 172 \'指定水平位置 rt.y = 0 \'指定垂直位置 ra.Children.Add(rt) \'将文本对象加入到容器ra中 Dim rb As New prt.RenderTable() \'定义一个表格对象 rb.Height = 70 \'设置高度 rb.Cols.Count = 6 \'设置列数 rb.Style.GridLines.All = New prt.LineDef \'设置网格线类型 rb.X = 10 \'指定水平位置 rb.y = 21 \'指定垂直位置 rb.Style.Font = New Font("宋体", 10, FontStyle.Regular) \'设置文本字体,宋体,10磅,普通 rb.Style.TextAlignHorz = prt.AlignHorzEnum.Left \'水平靠左 rb.Style.TextAlignVert = prt.AlignVertEnum.Center \'垂直居中 rb.Cols(0).Width = 27.5 rb.Cols(1).Width = 51 rb.Cols(2).Width = 52 rb.Cols(3).Width = 23 rb.Cols(4).Width = 21.5 rb.Cols(5).Width = 30 rb.Width = "Auto" \'设置宽度 Dim ColNames As String() = New String(){"品名", "规格型号","SN", "登记单号", "货物特征","备注"} For c As Integer = 0 To ColNames.Length -1 For r As Integer = p * prs To math.Min(tb.Rows.Count - 1,( p + 1) * prs - 1) rb.Cells(r - p * prs, c).Text = tb.rows(r)(ColNames(c)) Next Next ra.Children.Add(rb) \'将表格对象加入到容器ra中 If p = math.Ceiling(tb.Rows.Count / prs) - 1 \'如果是最后一页 For r As Integer = tb.Rows.Count To ( p + 1) * prs - 1 \'补空行 rb.Rows.Count = rb.Rows.Count + 1 rb.Rows(rb.Rows.count -1)(0).text = " " Next Else rb.BreakAfter = prt.BreakEnum.Page \'否则换页 End If doc.Body.Children.Add(ra) \'将容器ra加入到报表 Next doc.Preview() \'ra.X = 0 \'指定容器水平位置 \'ra.y = 24 \'指定容器垂直位置 这两行代码有问题吗?为什么一但取消注释,就不再换页了,就在一个页面重复打印? |
-- 作者:有点蓝 -- 发布时间:2020/11/5 17:03:00 -- 需要什么效果?现在是什么效果?截图说明一下 |
-- 作者:5159518 -- 发布时间:2020/11/5 17:40:00 -- 此主题相关图片如下:微信图片_20201105163001.png 这个分页打印的效果,只是位置不对 而添加了位置之后
|
-- 作者:5159518 -- 发布时间:2020/11/5 17:48:00 -- 添加位置之后,就都在一页上面,重复打印了 而且那个容器的位置,后续要添加变量,这样用户就可以自己根据实际情况调整了,而且添加容器之后,改变位置的那部分代码,也就只要设定一个地方就好,感觉清爽了很多,只是不知道为什么添加位置后,就不换页了,很奇怪,不知道哪里搞错了
|
-- 作者:5159518 -- 发布时间:2020/11/5 18:06:00 -- 以下是引用有点蓝在2020/11/5 17:03:00的发言: 需要什么效果?现在是什么效果?截图说明一下 咋没声音啦,我还在线等呢
|
-- 作者:有点蓝 -- 发布时间:2020/11/5 20:18:00 -- 设置一下上边距和左边距:http://www.foxtable.com/webhelp/topics/1188.htm Doc.PageSetting.LeftMargin = 20 \'设置左边距
[此贴子已经被作者于2020/11/5 20:18:18编辑过]
|
-- 作者:5159518 -- 发布时间:2020/11/5 21:25:00 -- 以下是引用有点蓝在2020/11/5 20:18:00的发言:
设置一下上边距和左边距:http://www.foxtable.com/webhelp/topics/1188.htm Doc.PageSetting.LeftMargin = 20 \'设置左边距 为什么不可以设置容器的位置呢?
[此贴子已经被作者于2020/11/5 20:18:18编辑过]
|
-- 作者:有点蓝 -- 发布时间:2020/11/5 21:36:00 -- 容器使用的是绝对位置 |
-- 作者:5159518 -- 发布时间:2020/11/5 21:55:00 -- 刚刚试了一下,总工6页的内容,却打了13页,纸张设置是140高,可是实际打出来却差不多220,排版没有乱,就是感觉纸张尺寸不对了,为什么会这样? |
-- 作者:5159518 -- 发布时间:2020/11/5 22:03:00 -- 刚刚将上边距从24改到50,结果就打了26页,还隔着打,什么情况?究竟是代码问题还是软件问题? |