以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]疯了,纵向piao据打印就是变成横向 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71510) |
-- 作者:huangfanzi -- 发布时间:2015/7/13 11:10:00 -- [求助]疯了,纵向piao据打印就是变成横向 看了之前论坛上发的帖子,浪费了快50张纸了,实在不行了,老师帮我看看怎么回事。 以下是我完整的打印按钮代码: e.Form.Page.Width = 241 \'纸张宽度为XX毫米 e.Form.Page.Height = 139.7 \'纸张高度为XX毫米 e.Form.Page.LeftMargin = 25 \'设置左边距 e.Form.Page.RightMargin = 25 \'设置右边距 e.Form.Page.TopMargin = 10 \'设置上边距 e.Form.Page.BottomMargin = 10 \'设置下边距 Dim doc As PrintDoc = e.Form.GernatePrintDoc() doc.AutoRotate = False \'禁止自动旋转打印内容 For Each c As object In Doc.Body.Children If c.Gettype.Name Like "*Table*" Then Dim t As prt.RenderTable = c For i As Integer = 0 To t.Rows.Count - 1 If t.Cells(i, 2).Text = Nothing AndAlso t.Cells(i, 1).Text <> Nothing Then t.Cells(i, 1).SpanCols = 5 End If Next End If Next Dim rx As New prt.RenderTable rx.Cells(0,0).Text = "上海昌硕金属新材料有限公司" rx.Cells(1,0).Text = "原料入库通知单" rx.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center \'设置居中 rx.CellStyle.Spacing.Bottom = 0.5 \'底端内容缩进0.5毫米 rx.Cells(0,0).Style.FontSize = 16 \'设置字体大小 rx.Cells(1,0).Style.FontSize = 14 \'设置字体大小 Doc.PageHeader = rx \'作为页眉使用 Dim rx1 As New prt.RenderTable rx1.Cells(0,0).Text = "制单:" & MainTable.Current("录入人") rx1.Cells(0,1).Text = "制单时间:" & MainTable.Current("录入时间") rx1.Cells(0,2).Text = "打印日期:" & Date.Today rx1.Cells(1,0).Text = " " rx1.Cells(2,0).Text = "一式四联: 【白色】 财务 【红色】 统计" rx1.Cells(2,1).Text = "【蓝色】 营销 【黄色】 仓库 " rx1.Cells(2,2).Text = "第[PageNo]页,共[PageCount]页" rx1.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left rx1.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center rx1.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right rx1.CellStyle.Spacing.Bottom = 0.5 \'底端内容缩进0.5毫米 rx1.Style.FontSize = 8 \'字体大小为8磅 Doc.PageFooter = rx1 \'作为页脚使用 doc.Preview() \'预览 以下是我点了打印按钮后的预览图: 在连续供纸的针式打印机上打出来的样子:
|
-- 作者:大红袍 -- 发布时间:2015/7/13 11:14:00 -- 不预览,直接print
doc.Preview() \'预览
改成
doc.Print |
-- 作者:大红袍 -- 发布时间:2015/7/13 11:15:00 -- 或者看一下这里,直接去打印机那里设置。
http://www.foxtable.com/help/topics/2904.htm
|
-- 作者:huangfanzi -- 发布时间:2015/7/13 12:19:00 -- 又经过反复测试,老师的方法一是可行的,可惜不能预览了,方法二还是老样子,我可能改不来代码,老师能根据我一楼的代码帮我改下吗? |
-- 作者:大红袍 -- 发布时间:2015/7/13 14:22:00 -- 以下是引用huangfanzi在2015/7/13 12:19:00的发言:
又经过反复测试,老师的方法一是可行的,可惜不能预览了,方法二还是老样子,我可能改不来代码,老师能根据我一楼的代码帮我改下吗?
方法二的意思,是你在打印那里设置纸张默认就是横向的。
然后下面这些红色代码可以不要
e.Form.Page.Width = 241 \'纸张宽度为XX毫米
e.Form.Page.Height = 139.7 \'纸张高度为XX毫米
e.Form.Page.LeftMargin = 25 \'设置左边距
e.Form.Page.RightMargin = 25 \'设置右边距
e.Form.Page.TopMargin = 10 \'设置上边距
e.Form.Page.BottomMargin = 10 \'设置下边距
Dim doc As PrintDoc = e.Form.GernatePrintDoc()
doc.AutoRotate = False \'禁止自动旋转打印内容
|
-- 作者:huangfanzi -- 发布时间:2015/7/13 14:43:00 -- 帮助文件中的插图是纵向,老师的意思是改成横向吗? 另外,我为了搞清楚为什么设置个打印这么难,我特意做了个页面设置窗口,在这个窗口中设置了上下左右边距,然后执行打印预览,我发现用代码设置的右边距对应系统的打印预览中的上边距,代码设置的上边距是打印预览中的右边距,这就解释了打印方向转了90度,这是系统的BUG吗?
|
-- 作者:大红袍 -- 发布时间:2015/7/13 14:55:00 -- 方法二,是要设置成横向;
嗯嗯,是的,边距设置,默认是纵向,设置横向打印以后,就是旋转90度的。 |
-- 作者:huangfanzi -- 发布时间:2015/7/13 15:16:00 -- 老师,还有个地方不明白, e.Form.Page.Width = 241与doc.PageSetting.Width = 241有何区别。
|
-- 作者:大红袍 -- 发布时间:2015/7/13 15:19:00 -- 以下是引用huangfanzi在2015/7/13 15:16:00的发言:
老师,还有个地方不明白, e.Form.Page.Width = 241与doc.PageSetting.Width = 241有何区别。
没什么区别。
设置 e.Form.Page.Width 之后,执行e.Form.GernatePrintDoc()后,会设置生成 doc.PageSetting.Width = 241 |
-- 作者:huangfanzi -- 发布时间:2015/7/13 18:41:00 -- 老师,按方式2用了打印预览后,怎么也设置不到我想要的结果,放弃了,直接打印的话确实能做到与设置的代码所想要的结果一致,可惜没有预览功能了,能通过别的方法进行预览吗? |