以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 标签打印 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=39120) |
||||
-- 作者:嘉华 -- 发布时间:2013/8/15 21:55:00 -- 标签打印
设置个按钮 点击 ”打印标签“按钮 让标签内容来自表格的“型号”“批次”两个列,我的标签固定模板每页60个标签,打印的标签个数 也来自表格的列的数值,如图100个=等于打印一页+40个标签 自动打印出需要的标签个数,而不是整页打印
按钮代码如何设置 [此贴子已经被作者于2013-8-16 11:16:58编辑过]
|
||||
-- 作者:有点甜 -- 发布时间:2013/8/15 22:22:00 -- 你的图挂了,请正确上传图片。 |
||||
-- 作者:嘉华 -- 发布时间:2013/8/16 11:47:00 -- 再传图片了 自己顶上去 |
||||
-- 作者:Bin -- 发布时间:2013/8/16 11:51:00 -- . 此主题相关图片如下:上传图片请参考这里.gif |
||||
-- 作者:狐狸爸爸 -- 发布时间:2013/8/16 14:10:00 -- 蒙一下,首先保证一页能打印60个:基本思路:
|
||||
-- 作者:嘉华 -- 发布时间:2013/8/17 11:45:00 -- 经修改:
此主题相关图片如下:111.jpg 此主题相关图片如下:222.jpg Dim doc As New PrintDoc \'定义一个报表 doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight \'设置排列方式 Doc.PageSetting.TopMargin = 3 \'设置上边距 Doc.PageSetting.BottomMargin = 3 \'设置下边距 For Each r As Row In Tables("表A").Rows For i As Integer = 1 To r("数量") Dim rt As New prt.RenderTable() \'定义一个表格对象 rt.Width = 31.2 \'表格宽度为31.2mm rt.Height = 16.5 \'高度16.5毫米 rt.Style.Spacing.All = 2 \'和其他对象之间的间隔为2mm rt.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割 rt.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割 rt.Cols(0).Width = 31.2 rt.Cells(0,0).Text = r("型号") rt.Cells(1,0).Text = r("批次") doc.Body.Children.Add(rt) \'将表格对象加入到报表中 If i Mod 102 = 0 Then Dim rm As new prt.RenderEmpty \'定一个空对象 rm.BreakBefore = prt.BreakEnum.Page \'打印前换页 doc.Body.Children.Add(rm) \'加入到报表中 End If Next If r("数量") > 0 AndAlso r("数量") Mod 102 <> 0 AndAlso r.Index < Tables("表A").Rows.count - 1 Then Dim rm As new prt.RenderEmpty \'定一个空对象 rm.BreakBefore = prt.BreakEnum.Page \'打印前换页 doc.Body.Children.Add(rm) \'加入到报表中 End If Next Doc.Preview() \'预览报表 经过狐狸爸爸的指点:经修改测试问题如下:1.变成打印表格的全部行,而我只要打印窗口绑定表的选定行的标签内容和数量2. 打印预览中的页边距始终是默认的,而我的标签纸张是205*292 上下左右边距是4mm , 标签之间左右间距2上下为0 标签大小为 31.2*16.5mm 3.标签的内容字体能否改成“ 型号”为32号字体 “ 批次”为16号字体,文字字体为居中
|
||||
-- 作者:Bin -- 发布时间:2013/8/17 11:53:00 -- 那不要循环所有行即可 参考帮助里面专业报表相关章节,都可以灵活控制的.
|
||||
-- 作者:嘉华 -- 发布时间:2013/8/17 16:17:00 -- Dim doc As New PrintDoc \'定义一个报表 doc.PageSetting.Width = 205 \'纸张宽度为100毫米 doc.PageSetting.Height = 292 \'纸张高度为120毫米 Doc.PageSetting.LeftMargin = 4 \'设置左边距 Doc.PageSetting.RightMargin = 4 \'设置右边距 Doc.PageSetting.TopMargin = 5 \'设置上边距 Doc.PageSetting.BottomMargin = 5 \'设置下边距 doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight \'设置排列方式 For Each r As Row In Tables("表A").Rows For i As Integer = 1 To r("数量") Dim rt As New prt.RenderTable() \'定义一个表格对象 rt.Width = 31.2 \'表格宽度为31.2mm rt.Height = 16.5 \'高度16.5毫米 rt.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割 rt.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割 rt.Cols(0).Width = 31.2 rt.Cells(0,0).Text = r("型号") rt.Style.FontSize = 12 \'字体大小为16磅 rt.Cells(1,0).Text = r("批次") rt.Style.Spacing.Right = 2 rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中 rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'垂直居中 doc.Body.Children.Add(rt) \'将表格对象加入到报表中 If i Mod 102 = 0 Then Dim rm As new prt.RenderEmpty \'定一个空对象 rm.BreakBefore = prt.BreakEnum.Page \'打印前换页 doc.Body.Children.Add(rm) \'加入到报表中 End If Next If r("数量") > 0 AndAlso r("数量") Mod 102 <> 0 AndAlso r.Index < Tables("表A").Rows.count - 1 Then Dim rm As new prt.RenderEmpty \'定一个空对象 rm.BreakBefore = prt.BreakEnum.Page \'打印前换页 doc.Body.Children.Add(rm) \'加入到报表中 End If Next Doc.Preview() \'预览报表 谢谢大师回复:这两点还是不理解解决不了 1.变成打印表格的全部行,而我只要打印窗口绑定表的选定行的标签文本内容和数量 2.标签的内容字号能否分别改成两个字号:(改成“ 型号”为32号字体 “ 批次”为16号字体) 能否将上述代码 修改下? 万般感谢!
|
||||
-- 作者:Bin -- 发布时间:2013/8/17 16:20:00 -- 楼上我不是和你说了吗,不要循环行即可 For Each r As Row In Tables("表A").Rows 和后面的Next 去掉 改为 dim r as row = tables("表A").current 参考帮助里面专业报表相关章节,都可以灵活控制的.
|
||||
-- 作者:嘉华 -- 发布时间:2013/8/17 18:01:00 -- 经过大师们的知道,加上胶水剪刀,也算是对专业报表的汇总学习 感谢大师们和QQ群上的朋友们,附上代码以供借鉴 Dim doc As New PrintDoc \'定义一个报表 doc.PageSetting.Width = 205 \'纸张宽度为100毫米 doc.PageSetting.Height = 292 \'纸张高度为120毫米 Doc.PageSetting.LeftMargin = 4 \'设置左边距 Doc.PageSetting.RightMargin = 4 \'设置右边距 Doc.PageSetting.TopMargin = 5 \'设置上边距 Doc.PageSetting.BottomMargin = 5 \'设置下边距 doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight \'设置排列方式 Dim r As Row = Tables("表A").current \'定义一个表格对象 For i As Integer = 1 To r("数量") Dim rt As New prt.RenderTable() \'定义一个表格对象 rt.Width = 32 \'表格宽度为31.2mm rt.Height = 16.5 \'高度16.5毫米 rt.Style.Spacing.Left = 6\'设置左间隔为3毫米 rt.Style.Spacing.Right = 4 \'设置右间隔为3毫米 rt.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割 rt.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割 rt.Cols(0).Width = 31.2 rt.Cells(0,0).Text = r("型号") rt.Style.FontSize = 12 \'字体大小为16磅 rt.Cells(1,0).Text = r("批次") rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center \'水平居中 rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'垂直居中 rt.cells(0,0).Style.Font =New Font("黑体",28,FontStyle.Underline) rt.cells(1,0).Style.Font =New Font("黑体",12,FontStyle.Bold) doc.Body.Children.Add(rt) \'将表格对象加入到报表中 If i Mod 102 = 0 Then Dim rm As new prt.RenderEmpty \'定一个空对象 rm.BreakBefore = prt.BreakEnum.Page \'打印前换页 doc.Body.Children.Add(rm) \'加入到报表中 End If Next If r("数量") > 0 AndAlso r("数量") Mod 102 <> 0 AndAlso r.Index < Tables("表A").Rows.count - 1 Then Dim rm As new prt.RenderEmpty \'定一个空对象 rm.BreakBefore = prt.BreakEnum.Page \'打印前换页 doc.Body.Children.Add(rm) \'加入到报表中 End If Doc.Preview() \'预览报表
|