我在VB中通过printer行销售单据的打印,由于随着客户购卖东西的多少来动态生成单据的长度(有可能很窄,也有可能比较长),在刚开始时用printer的各种命令设好要打印单据格式和数据后,用printer.enddoc命令来送往打印机打印时,即使 一两条记录它也要走完一页纸(而客户的要求则是打在什么地方便停在那里,下一客户单了就跟在后面打印)。后经查阅资讯,说将printer.papersize设为256(自定义大小),再通过printer.heigth printer.width 设为计算后的值就可以了。可程序在执行到printer.papersize=256却提示“无效属性值”错误,也就是无法完成。后又查到说该方法只能在98下正确实现,而在2000/XP下需要通过一些别的办法来实现,可都没有给出详细的实现方法(我指在VB程序中)。那位知道如何通过VB在2000下实现打印纸大小的动态设置,或通过printer进行不规则长度连续打印的好办法,快帮帮我吧!明天就要给交货了,很急的!!!····
vbPRPSLetterSmall 2 +A611 小型信笺, 8 1/2 x 11 英寸
vbPRPSTabloid 3 小型报, 11 x 17 英寸
vbPRPSLedger 4 分类帐, 17 x 11 英寸
vbPRPSLegal 5 法律文件, 8 1/2 x 14 英寸
vbPRPSStatement 6 声明书,5 1/2 x 8 1/2 英寸
vbPRPSExecutive 7 行政文件,7 1/2 x 10 1/2 英寸
vbPRPSA3 8 A3, 297 x 420 mm
vbPRPSA4 9 A4, 210 x 297 mm
vbPRPSA4Small 10 A4小号, 210 x 297 mm
vbPRPSA5 11 A5, 148 x 210 mm
vbPRPSB4 12 B4, 250 x 354 mm
vbPRPSB5 13 B5, 182 x 257 mm
vbPRPSFolio 14 对开本, 8 1/2 x 13 英寸
vbPRPSQuarto 15 四开本, 215 x 275 mm
vbPRPS1&H14 16 10 x 14 英寸
vbPRPS11x17 17 11 x 17 英寸
vbPRPSNote 18 便条,8 1/2 x 11 英寸
vbPRPSEnv9 19 #9 信封, 3 7/8 x 8 7/8 英寸
vbPRPSEnv10 20 #10 信封, 4 1/8 x 9 1/2 英寸
vbPRPSEnv11 21 #11 信封, 4 1/2 x 10 3/8 英寸
vbPRPSEnv12 22 #12 信封, 4 1/2 x 11 英寸
vbPRPSEnv14 23 #14 信封, 5 x 11 1/2 英寸
vbPRPSCSheet 24 C 尺寸工作单
vbPRPSDSheet 25 D 尺寸工作单
vbPRPSESheet 26 E 尺寸工作单
vbPRPSEnvDL 27 DL 型信封, 110 x 220 mm
vbPRPSEnvC3 29 C3 型信封, 324 x 458 mm
vbPRPSEnvC4 30 C4 型信封, 229 x 324 mm
vbPRPSEnvC5 28 C5 型信封, 162 x 229 mm
vbPRPSEnvC6 31 C6 型信封, 114 x 162 mm
vbPRPSEnvC65 32 C65 型信封,114 x 229 mm
vbPRPSEnvB4 33 B4 型信封, 250 x 353 mm
vbPRPSEnvB5 34 B5 型信封,176 x 250 mm
vbPRPSEnvB6 35 B6 型信封, 176 x 125 mm
vbPRPSEnvItaly 36 信封, 110 x 230 mm
vbPRPSEnvMonarch 37 信封大王, 3 7/8 x 7 1/2 英寸
vbPRPSEnvPersonal 38 信封, 3 5/8 x 6 1/2 英寸
vbPRPSFanfoldUS 39 U.S. 标准复写簿, 14 7/8 x 11 英寸
vbPRPSFanfoldStdGerman 40 德国标准复写簿, 8 1/2 x 12 英寸
vbPRPSFanfoldLglGerman 41 德国法律复写簿, 8 1/2 x 13 英寸
vbPRPSUser 256 用户定义看看这里有没有你需要的大小!!
帮忙啊!最好是以前实战检验过的方法。
x As Long
y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Type PAGESETUPDLG
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
flags As Long
ptPaperSize As POINTAPI
rtMinMargin As RECT
rtMargin As RECT
hInstance As Long
lCustData As Long
lpfnPageSetupHook As Long
lpfnPagePaintHook As Long
lpPageSetupTemplateName As String
hPageSetupTemplate As Long
End Type
Private Declare Function PAGESETUPDLG Lib "comdlg32.dll" Alias "PageSetupDlgA" (pPagesetupdlg As PAGESETUPDLG) As LongPrivate Sub Command1_Click()
ShowPageSetupDlg
End SubPrivate Function ShowPageSetupDlg() As Long
Dim m_PSD As PAGESETUPDLG
'Set the structure size
m_PSD.lStructSize = Len(m_PSD)
'Set the owner window
m_PSD.hwndOwner = Me.hWnd
'Set the application instance
m_PSD.hInstance = App.hInstance
'no extra flags
m_PSD.flags = 0 'Show the pagesetup dialog
If PAGESETUPDLG(m_PSD) Then
ShowPageSetupDlg = 0
Else
ShowPageSetupDlg = -1
End If
End Function
楼上能不能说的详细点,或给出具体的实现。谢谢了
dim x as long
dim y as long x=自定纸宽
y=自定纸高
oReport.SetUserPaperSize x, y
set ReportViewer.ReportSource=oReport
ReportViewer.Show