以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [原创]打印选中的复选框中的内容  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=106292)

--  作者:sysckj
--  发布时间:2017/9/6 10:49:00
--  [原创]打印选中的复选框中的内容
Dim i As Integer
For Each r As Row In Tables("数据表").rows
    r.Table.Position = r.Index
       Select Case Vars("规格")
        Case "0.5kg/袋"
            For i=1 To r("qty")/0.5 Step 1
                Dim doc As PrintDoc = e.Form.GernatePrintDoc()
                Doc.print()
            Next
        Case "1kg/袋"
            For i=1 To r("qty")/1 Step 1
               Dim doc As PrintDoc = e.Form.GernatePrintDoc()
                Doc.print()
            Next
    End Select
Next

已经在数据表中调出复选框选项,如何在该代码的基础上增加为只打印选中的复选框数据

--  作者:有点甜
--  发布时间:2017/9/6 11:05:00
--  
Dim i As Integer
For Each r As Row In Tables("数据表").GetCheckedRows
   

--  作者:sysckj
--  发布时间:2017/9/6 11:27:00
--  回复:(有点甜)Dim i As IntegerFor Each r As Row ...
Dim cnames() As String = {"BarCode1", "BarCode2", "BarCode3"}
Dim ge As String = vars("规格").GetCheckedRows
ge = iif(ge="0.5kg/袋", "500.0g", iif(ge="1kg/袋", "1000.0g", ""))
For Each r As Row In Tables("数据表").rows
    Dim cnt As Integer = r("qty") / (val(ge.replace("g", "")) / 1000)
    Dim st As Integer = Math.Ceiling(cnt /3)
    For i As Integer = 0 To 2
        e.Form.controls("label" & i & "1").text = r("fullname")
        e.Form.controls("label" & i & "2").text = r("outfactorydate")
        e.Form.controls("label" & i & "3").text = r("jobnumber")
        e.Form.controls("label" & i & "4").text = ge
    Next
    For i As Integer = 0 To st - 1
        For Each cname As String In cnames
            Dim bar As WinForm.BarCode = e.Form.Controls(cname)
            Dim str As String = ""
            For j As Integer = 1 To 35
                str &= Rand.Next(10)
            Next
            bar.Code = "*" & str
            bar.Text = str.substring(0,12) & vbcrlf & str.SubString(12, 12) & vbcrlf & str.SubString(24)
        Next
        If i = st-1 Then
            If i * 3 + 1>=cnt Then
                e.Form.controls("label11").text = Nothing
                e.Form.controls("label12").text = Nothing
                e.Form.controls("label13").text = Nothing
                e.Form.controls("label14").text = Nothing
                Dim bar As WinForm.BarCode = e.Form.Controls("BarCode2")
                bar.Code = ""
                bar.Text = ""
            End If
            If i * 3 + 2>=cnt Then
                e.Form.controls("label21").text = Nothing
                e.Form.controls("label22").text = Nothing
                e.Form.controls("label23").text = Nothing
                e.Form.controls("label24").text = Nothing
                Dim bar As WinForm.BarCode = e.Form.Controls("BarCode3")
                bar.Code = ""
                bar.Text = ""
            End If
        End If
        Dim doc As PrintDoc = e.Form.GernatePrintDoc()
        doc.print
    Next
Next

这个该怎么加呢

--  作者:sysckj
--  发布时间:2017/9/6 11:30:00
--  回复:(有点甜)Dim i As IntegerFor Each r As Row ...
还有就是,我在窗口中的一个Label控件,现在是字数超过设置的长度就换行打印覆盖到下面的内容上面了,我想要他超出的那部分就不要打印了,怎么设置呢
--  作者:有点甜
--  发布时间:2017/9/6 11:35:00
--  

For Each r As Row In Tables("数据表").rows

 

改成

 

For Each r As Row In Tables("数据表").GetCheckedRows


--  作者:有点甜
--  发布时间:2017/9/6 11:39:00
--  
以下是引用sysckj在2017/9/6 11:30:00的发言:
还有就是,我在窗口中的一个Label控件,现在是字数超过设置的长度就换行打印覆盖到下面的内容上面了,我想要他超出的那部分就不要打印了,怎么设置呢

 

你可以设置label的自动大小->False;宽高设置成你定义的宽高。


--  作者:sysckj
--  发布时间:2017/9/6 11:45:00
--  回复:(有点甜)以下是引用sysckj在2017/9/6 11:30:0...
自动大小是False啊,但是打印出来就是自动换行了
--  作者:有点甜
--  发布时间:2017/9/6 11:48:00
--  
以下是引用sysckj在2017/9/6 11:45:00的发言:
自动大小是False啊,但是打印出来就是自动换行了

 

打印出来的,是你设置的控件的宽度和高度那个大小的,不会超出打印的。


--  作者:sysckj
--  发布时间:2017/9/6 11:51:00
--  回复:(有点甜)以下是引用sysckj在2017/9/6 11:45:0...
那我再调下高度看看,DateTimePicker日期控件怎么设置默认是计算机时间呢
--  作者:有点甜
--  发布时间:2017/9/6 11:57:00
--  
以下是引用sysckj在2017/9/6 11:51:00的发言:
那我再调下高度看看,DateTimePicker日期控件怎么设置默认是计算机时间呢

 

e.form.controls("DateTimePicker1").Value = Date.Now