| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
大量收QQ微信精准粉/交友粉,非诚勿扰千里之行 始于足下
共有 362 人关注过本帖
标题:求教打印格式问题(SET PRINTER FONT)
只看楼主 加入收藏
luandening
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-2
  问题点数:0  回复次数:2   
求教打印格式问题(SET PRINTER FONT)
遇到一个本人解决不了的问题,救助一下。
现在使用的软件是用命令进行打印。
举例如下:
  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”还有什么参数是设置行间距的。或者有什么其它的办法能解决。请教大神。谢谢。
2017-12-25 09:45
wds1
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:24
帖 子:255
专家分:1404
注 册:2016-3-10
  得分:0 
以前只有在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
2017-12-25 10:35
luandening
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-4-2
  得分:0 
回复 2楼 wds1
非常感谢

努力提升自己
2017-12-25 11:20







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028427 second(s), 9 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved