![]() |
#2
wds12017-12-25 10:35
以前只有在fox和foxpro用到过打印机,语句和你的类似,你的问题估计是vpf没有设置行列间距。
VB的我没用过,简单的打印调用printer可以。 给你贴一个别人的: Printer.FontSize = 19.2 DataTitle = "XXXXXXXX" Pageheader = 25 Pagefooter = 25 Pageleft = 20 Pageright = 20 With Printer .PaperSize = vbPRPSA4 ' 设置为A4纸 .ScaleMode = vbMillimeters .FontBold = True .ScaleLeft = -20 .ScaleTop = -25 .ScaleWidth = 210 .ScaleHeight = 297 UseWidth = .ScaleWidth - Pageleft - Pageright UseHeight = .ScaleHeight - Pageheader - Pagefooter .CurrentX = 0 .CurrentY = 0 .DrawWidth = 5 End With '打印标题 With Printer .FontSize = 20 .CurrentX = (UseWidth - .TextWidth(DataTitle)) / 2 .CurrentY = Pageheader + .ScaleTop End With Printer.Print DataTitle Printer.FontSize = 10 Printer.CurrentX = Pageleft + Printer.ScaleLeft startyline = Printer.CurrentY DataRow = "" With Printer '打印字段名 .CurrentY = .CurrentY + 15 Y = .CurrentY For N = 0 To RS.Fields.Count - 2 .CurrentX = (UseWidth / RS.Fields.Count) * N + Pageleft .CurrentY = Y SectionPos(N) = .CurrentX Printer.Print IIf(IsNull(RS.Fields(N + 1).Name), "", RS.Fields(N + 1).Name) Next .CurrentX = SectionPos(0) Printer.Print DataRow '打印每行数据 Do While .CurrentY <= .ScaleHeight - Pagefooter DataRow = "" Y = .CurrentY For N = 0 To RS.Fields.Count - 2 .CurrentX = SectionPos(N) .CurrentY = Y Printer.Print IIf(IsNull(RS.Fields(N + 1).Value), "", RS.Fields(N + 1).Value) Next RS.MoveNext If RS.EOF <> True Then Else Exit Do End If Loop .EndDoc End With |
遇到一个本人解决不了的问题,救助一下。
现在使用的软件是用命令进行打印。
举例如下:
set devi to print
set print on
set print font '宋体',16
@ prow()+3,2 say ....................
@ prow()+1,0 say ....................
@ prow()+1,0 say ....................
................
................
set print to lpt1
set devi to scre
set print
一直没出现什么大问题。
直到某用户是特定的电脑和打印机出现了特殊情况。
用其它软件打印之后,再调用打VPF的打印程序,用出现行间距的改变,有时变大,有时变小,而且文字也跟着变高或者变矮,宽度不变。变大的无法在一张纸上打全,变小时很难看清。
自己想着是不是“set print font”还有什么参数是设置行间距的。或者有什么其它的办法能解决。请教大神。谢谢。