VB ACTIVEREPORT 2 動態添加控件 Barcode lable pagebreak

        本人近日,由於業務要求,用ACTIVE REPORT 2 做一個條碼打印軟件,由於條碼數目具有不確定性,所以要動態添加Barcode lable pagebreak控件,查了很多資料,但是由於ACTIVE REPORT 2 是設計器,不是WINFORM ,有用的信息很少,經過自己研究,終於搞定,哈哈,分享一下!

                                                                                                                                                                         作者:章亞

Sub Print_LOOK()
   Dim i As Integer, t As Integer, j As Integer, st As String
   Dim left As Integer, top As Integer, height As Integer, width As Integer, bwidth As Integer
    Dim x As Long, y As Long
    Dim barcode As String    '條碼內容
    t = Len(Trim(txtStart.Text))
    x = Val(Trim(txtStart.Text))   '開始碼
    y = Val(Trim(txtEnd.Text))   '結束碼
   
    left = Val(Trim(txtLeft.Text))      '左
    top = Val(Trim(txtTop.Text))      '上
    height = Val(Trim(txtHeight.Text))            '高
    width = Val(Trim(txtWidth.Text))             '寬
    bwidth = Val(Trim(txtBwidth.Text))            '密度
   
    barcode = Trim(txtBarcode.Text)
   
    j = 0
 
    With APT
        .Restart
        For i = 0 To y - x
            .Printer.Copies = Val(txtCopies.Text)   '打印份數
            BarcodeSet    '設置
            If chkSelt.Value = 0 Or (chkSelt.Value = 1 And OptOpp.Value = True And (i + x) Mod 2 = 0) Or (chkSelt.Value = 1 And OptOdd.Value = True And (i + x) Mod 2 <> 0) Then    '判斷,可不管它
                   Dim bar As Object
                   Dim lbl As Object
                   With APT.Sections("Detail").Controls
                        Set bar = .Add("DDActiveReports2.BarCode")
                        Set lbl = .Add("DDActiveReports2.Label")
                    End With
                    'bar.Name = "Bd" & j + 1
                    'lbl.Name = "lbl" & j + 1
                If j Mod 2 = 1 Then
                    bar.left = left + 5400
                Else
                    bar.left = left
                End If
                bar.top = top + Int(j / 2) * 2600
                bar.height = height
                bar.width = width
                bar.BarWidth = bwidth  '條碼密度
                lbl.top = bar.top + bar.height 'lbl 跟BD1 屬性走
                lbl.left = bar.left
                lbl.width = bar.width
                st = format(i + x, t)
                bar.Caption = barcode & st
                lbl.Caption = barcode & st
                If (j + 1) Mod 10 = 0 Then
                     Dim pgbk As Object
                    With APT.Sections("Detail").Controls
                        Set pgbk = .Add("DDActiveReports2.PageBreak")      '添加分頁控件
                    End With
                    pgbk.top = bar.top + 2600
                    APT.Detail.height = APT.Detail.height + 13000
                    End If
                j = j + 1
            End If
        Next i
    End With

APT.PrintReport (False)  '開始打印

End Sub

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章