以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  标签间隔  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=114428)

--  作者:刘林
--  发布时间:2018/2/6 9:48:00
--  标签间隔

Dim tb As Table=Tables("学生信息")
Dim rs As List(of Row) = tb.GetCheckedRows()
If rs.Count>=1
    For Each r As Row In tb.getcheckedrows()
        If r("学生姓名") = Nothing Or r("就读方式") = Nothing Or r("班级")= Nothing Or r("相片") = Nothing
            messagebox.show("您所勾选的记录存在学生姓名或就读方式或班级或相片等必要信息,请填好相关信息再打印")
            Return
        End If
    Next
    Dim doc As New PrintDoc \'定义一个报表
    Dim Rows As List(Of DataRow)
    doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
    Doc.PageSetting.leftMargin = 10
    Doc.PageSetting.rightMargin = 0
    Doc.PageSetting.TopMargin  =10
    Doc.PageSetting.BottomMargin  =0
    For Each r As Row In tb.getcheckedrows()
        Dim ra As New prt.RenderArea
        Dim rt As prt.RenderText
        ra.Width = 90 \'宽度53毫米
        ra.Height = 55 \'高度24毫米
        ra.Style.Spacing.all = 6
        ra.Style.Borders.All = New prt.Linedef(0.1, Color.Red) \'设置边框
        ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割
        Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中
        rt = New prt.RenderText
        rt.Text = r("学校名称")
        rt.Style.Font=New Font("黑体", 15, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
        rt.Y = 6
        ra.Children.Add(rt) \'添加到容器中
        rt = New prt.RenderText
        rt.Text = "姓名:" & r("学生姓名")
        rt.Style.Font=New Font("黑体", 13, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        
        rt.Y =22
        rt.x=35
        ra.Children.Add(rt) \'添加到容器中
        rt = New prt.RenderText
        rt.Text = "班级:" &r("班级")
        rt.Style.Font=New Font("黑体", 13, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        
        rt.Y = 31
        rt.x= 35
        ra.Children.Add(rt) \'添加到容器
        rt = New prt.RenderText
        rt.Text = "备注:" & r("就读方式")
        rt.Style.Font=New Font("黑体", 13, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        
        rt.Y = 40
        rt.x=35
        ra.Children.Add(rt) \'添加到容
        Dim rm As New prt.RenderImage()
        rm.Image= GetImage(projectPath & "remotefiles" & r("相片"))
        rm.Width=30
        rm.Height=40
        rm.Y = 15
        ra.Children.Add(rm) \'添加到容
        r.Checked = False
    
    Doc.Preview() \'预览报表
Else
    PopMessage("你根本没在表格的最左边方框内勾选要打印的记录哟","友情提示", PopIconEnum.Infomation, 3)
End If



老师,请问当 ra.Style.Spacing.all = 6时出现挤占每张图片的大小了,当 ra.Style.Spacing.all = 0时大小是正常的,但没有空隙,不方便裁剪,我想达到有空隙,但不影响每张图片大小,请问怎么办?


[此贴子已经被作者于2018/2/6 10:43:45编辑过]

--  作者:刘林
--  发布时间:2018/2/6 9:51:00
--  图片间隔2

Dim tb As Table=Tables("学生信息")
Dim rs As List(of Row) = tb.GetCheckedRows()
If rs.Count>=1
    For Each r As Row In tb.getcheckedrows()
        If r("学生姓名") = Nothing Or r("就读方式") = Nothing Or r("班级")= Nothing Or r("相片") = Nothing
            messagebox.show("您所勾选的记录存在学生姓名或就读方式或班级或相片等必要信息,请填好相关信息再打印")
            Return
        End If
    Next
    Dim doc As New PrintDoc \'定义一个报表
    Dim Rows As List(Of DataRow)
    doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight
    Doc.PageSetting.leftMargin = 10
    Doc.PageSetting.rightMargin = 0
    Doc.PageSetting.TopMargin  =10
    Doc.PageSetting.BottomMargin  =0
    For Each r As Row In tb.getcheckedrows()
        Dim ra As New prt.RenderArea
        Dim rt As prt.RenderText
        ra.Width = 90 \'宽度53毫米
        ra.Height = 55 \'高度24毫米
        ra.Style.Spacing.all = 6
        ra.Style.Borders.All = New prt.Linedef(0.1, Color.Red) \'设置边框
        ra.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割
        ra.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割
        Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中
        rt = New prt.RenderText
        rt.Text = r("学校名称")
        rt.Style.Font=New Font("黑体", 15, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
        rt.Y = 6
        ra.Children.Add(rt) \'添加到容器中
        rt = New prt.RenderText
        rt.Text = "姓名:" & r("学生姓名")
        rt.Style.Font=New Font("黑体", 13, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        
        rt.Y =22
        rt.x=35
        ra.Children.Add(rt) \'添加到容器中
        rt = New prt.RenderText
        rt.Text = "班级:" &r("班级")
        rt.Style.Font=New Font("黑体", 13, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        
        rt.Y = 31
        rt.x= 35
        ra.Children.Add(rt) \'添加到容器
        rt = New prt.RenderText
        rt.Text = "备注:" & r("就读方式")
        rt.Style.Font=New Font("黑体", 13, FontStyle.Bold)
        If r("就读方式")="住校"
            rt.Style.TextColor=Color.red
        Else
            rt.Style.TextColor=Color.blue
        End If
        
        rt.Y = 40
        rt.x=35
        ra.Children.Add(rt) \'添加到容
        Dim rm As New prt.RenderImage()
        rm.Image= GetImage(projectPath & "remotefiles" & r("相片"))
        rm.Width=30
        rm.Height=40
        rm.Y = 15
        ra.Children.Add(rm) \'添加到容
        r.Checked = False
    Next
    Doc.Preview() \'预览报表
Else
    PopMessage("你根本没在表格的最左边方框内勾选要打印的记录哟","友情提示", PopIconEnum.Infomation, 3)
End If



这是图片正常,但没有间隔

这是有间隔,但图片大小变了

[此贴子已经被作者于2018/2/6 10:44:08编辑过]

--  作者:有点甜
--  发布时间:2018/2/6 9:52:00
--  

不要设置all,你可以设置bottom等,参考

 

http://www.foxtable.com/webhelp/scr/1173.htm

 


--  作者:刘林
--  发布时间:2018/2/6 9:57:00
--  
试过,一样的
--  作者:刘林
--  发布时间:2018/2/6 9:58:00
--  
left,right,bottom都试过,都要改变图片大小
--  作者:有点甜
--  发布时间:2018/2/6 9:59:00
--  
以下是引用刘林在2018/2/6 9:58:00的发言:
left,right,bottom都试过,都要改变图片大小

 

那你就把ra的高度height调高一些


--  作者:刘林
--  发布时间:2018/2/6 10:02:00
--  
ra.Width = 90 
ra.Height = 55
是固定值也就是名片大小 ,但要把每两张间隙要留出来,方便裁剪,实际是做批量印学生证,大小不能变

--  作者:有点甜
--  发布时间:2018/2/6 10:03:00
--  
调整测试过再说
--  作者:刘林
--  发布时间:2018/2/6 10:12:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:qq图片20180206100826.png
图片点击可在新窗口打开查看

这是将 ra.Style.Spacing.left = 3   ra.Style.Spacing.bottom =3的结果,我发现是间隙调了,同时图片也小了这样多,我用先后图片比对了的

--  作者:有点甜
--  发布时间:2018/2/6 10:14:00
--  
调整好ra的宽高width、height。