本人近日,由於業務要求,用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