当前位置:编程学习 > VB >>

打印对不齐

Printer.Orientation = 1
Printer.PaperSize = 9
Printer.FontSize = 16
Printer.ScaleMode = 6
Printer.CurrentX = 30
Printer.CurrentY = 16
Printer.Print "      资 产 负 债 表    "
Printer.FontSize = 9
Printer.FontName = "宋体"
Printer.CurrentX = 15
Printer.CurrentX = 90
Printer.Print " 报表日期:  " & gyear & " 年  " & gmonth & " 月   单位:" & gdwmc
Printer.CurrentX = 6
Printer.Print "┌────────────┬─┬──────┬──────┬──────────────┬─┬──────┬──────┐"
Printer.CurrentX = 6
Printer.Print "│        资    产        │行│   期未数   │   年初数   │      负债和所有者权益      │行│   期未数   │   年初数   │"
Printer.CurrentX = 6
Printer.Print "├────────────┼─┼──────┼──────┼──────────────┼─┼──────┼──────┤"
Printer.EndDoc
Printer.KillDoc
表头打印出来总对不齐?为什么 --------------------编程问答-------------------- 一个汉字等于2个字符,自己换算一下,多调试调试就行了.
--------------------编程问答-------------------- 我用CommonDialog打印控件为什么改不了打印数量?? --------------------编程问答-------------------- 由于两个半角空格的宽度并不等于一个汉字的宽度,所以你对不齐就是正常的了。
MsgBox Printer.TextWidth("  ") - Printer.TextWidth("─") '约差0.0353毫米



'全角空格添充表格线内容
'重新定位表头文字
Private Sub Command1_Click()
    Printer.Orientation = 1
    Printer.PaperSize = 9
    Printer.FontSize = 16
    Printer.ScaleMode = 6
    Printer.CurrentX = 30
    Printer.CurrentY = 16
    Printer.Print "      资 产 负 债 表    "
    Printer.FontSize = 9
    Printer.FontName = "宋体"
    Printer.CurrentX = 15
    Printer.CurrentX = 90
    Printer.Print " 报表日期:  " & gyear & " 年  " & gmonth & " 月  单位:" & gdwmc
    Printer.CurrentX = 6
    Printer.Print "┌────────────┬─┬──────┬──────┬──────────────┬─┬──────┬──────┐"
    Printer.CurrentX = 6
    Printer.Print "│            │ │      │      │              │ │      │      │"
    Printer.CurrentY = 27.9
    Printer.CurrentX = 6 + Printer.TextWidth("─") * 5
    Printer.Print "资  产";
    Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 5
    Printer.Print "行";
    Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 2.5
    Printer.Print "期未数";
    Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 4
    Printer.Print "年初数";
    Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 5.5
    Printer.Print "负债和所有者权益";
    Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 4
    Printer.Print "行";
    Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 2.5
    Printer.Print "期未数";
    Printer.CurrentX = Printer.CurrentX + Printer.TextWidth("─") * 4
    Printer.Print "年初数"
    
    Printer.CurrentX = 6
    Printer.Print "├────────────┼─┼──────┼──────┼──────────────┼─┼──────┼──────┤"
    Printer.EndDoc
    Printer.KillDoc
    '表头打印出来总对不齐?为什么
End Sub

--------------------编程问答-------------------- 给你一个概念, 将表格与内容全部画在 PictureBox 当做预览画面, 要打印时再Printer.PaintPicture

下图白色背景部份就是PictureBox,要打印时再点击左上角那台打印机

Sub ShowTitle()
   Picture2.Cls
   Picture2.FontSize = 9
   Picture2.Print
   Picture2.FontSize = 18
   Picture2.FontBold = True
   Picture2.Font = "楷体_GB2312"
   AA = "产品资料明细一览表"
   Picture2.CurrentX = (Picture2.Width - Picture2.TextWidth(AA)) \ 2 '注意这行的居中
   Picture2.Print AA
   Picture2.FontBold = False
   Picture2.FontSize = 12
   Picture2.Print
   Picture2.CurrentY = Picture2.CurrentY - 100
   Picture2.Font = "新宋体"
   AA = "制表日期: " & Format(Date, "mm/dd/yyyy") & Space(3) & "时间: " & Time$
   Picture2.CurrentX = (Picture2.Width - Picture2.TextWidth(AA)) \ 2
   Picture2.Print AA & Space(8) & "页次: " & CStr(PageNo) & " / " & CStr(Tpage)



补充:VB ,  数据库(包含打印,安装,报表)
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,