| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1338 人关注过本帖
标题:求教打印格式问题(SET PRINTER FONT)
只看楼主 加入收藏
luandening
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-4-2
结帖率:50%
收藏
 问题点数: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”还有什么参数是设置行间距的。或者有什么其它的办法能解决。请教大神。谢谢。
搜索更多相关主题的帖子: 打印 格式 SET print 出现 
2017-12-25 09:45
wds1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:49
帖 子:393
专家分:2025
注 册: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
等 级:新手上路
帖 子:6
专家分:0
注 册:2015-4-2
收藏
得分:0 
回复 2楼 wds1
非常感谢

努力提升自己
2017-12-25 11:20
快速回复:求教打印格式问题(SET PRINTER FONT)
数据加载中...
 
   



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

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