狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

基于VB的通用折行打印程序

基于VB的通用折行打印程序

更新時間:2024-04-11 文章作者:未知 信息來源:網絡 閱讀次數:

---- 一. 概述

---- 幾乎所有數據庫應用軟件,都需要打印單證和報表。常見的方法是利用VB的Crystal Reports(水晶報表)方式,通過TextBox等數據綁定控件,調用Print方法直接輸出。雖然Crystal Report這一個功能強大、樣式豐富且無編程方式的報表編制程序能適應大部分單證、報表打印的需要,但是Crystal Reports引擎是一個動態鏈接庫,需許多文件支持和調用更多系統資源,大大增加系統負擔。

---- 另一種解決辦法是通過Printer對象的Print方法,直接打印字符串。這雖然減少了系統資源的開銷,但它不能直接用于打印復雜的單證和報表。本文通過兩個實例,闡述一個通用折行打印程序的編程和在單證及報表的應用。

---- 二. 編程實現及實例

---- 為便于闡述的方便,我們先建立一個Access數據庫Standards.mdb,其內SN表由以下幾個字段組成:

---- 標準號(文本,17)

---- 標準名稱(文本,255)

---- 英文名稱(文本,255)

---- 實施日期(日期,8)

---- 修定日期(日期,8)

---- 發布日期(日期,8)

---- 代替標準(文本,50)

---- 通用折行打印程序編制操作如下:

---- 1.在VB5.0編程環境中,新建一個工程Project1;

---- 2. 在Project1中添加Moduel,在Moduel模塊中定義一個記錄最大折行數的公用變量Rowlab和Function函數(以下程序都經過實際運行測試,可以原樣復制使用);

Public rowlab As Integer       
'定義一個公用變量
Function prnt11(X As Integer, Y As
Integer,Font As Single, Txt As String, Val As Integer)
Dim str As String, str1 As String,
str2 As String ,i As Integer
Printer.CurrentX = X
Printer.CurrentY = Y
Printer.FontBold = False
Printer.FontSize = font
str = txt
str2 = str
i = 0
rowlab = 0
If Len(Trim(str)) = 0 Then
     rowlab = 1   '待打印字符串為空的標志
Else
  Do While Len(str) > 0
     Printer.CurrentX = X
     Printer.CurrentY = Y + rowlab * 240
     rowlab = rowlab + 1
     If Len(str) >= val Then
        str1 = Mid(str, 1, val)
        Printer.Print str1
        i = i + 1
        str = Mid(str2, i * val + 1)
     Else
       Printer.Print str
       Exit Do
     End If
   Loop
End If
End Function

---- 3. 在Project1中新建一個窗體Form1,窗體上添加一個Data控件Data1,一個MSFlexGrid控件MSFGrid1,7個 TextBox和兩個命令按鈕CmdPrnt1、CmdPrnt2。設置Data控件的屬性:

.. DatabaseName="Standards.mdb"
..RecordSourse="SN"
   MSFGrid1屬性:
       .DataSource="Data1"
   Text1屬性:
       .DataSource="Data1"
       .DataField="標準號"
   Text2~Text7類同。

---- CmdPrnt1、CmdPrnt2分別為打印單條記錄和多條記錄的按鈕。

---- 實例1:文字串定位折行打印在口岸聯檢部門中應用非常廣泛。下述例子是用CmdPrnt1的Click事件代碼實現了對文字串定位折行打印:

Private Sub CmdPrnt1_Click()
Dim str As String, str1 As String ,txt As String
Dim strx As Integer, stry As Integer,i As Integer
strx = 200
stry = 0
txt = Space(20) + "中國出入境檢驗檢疫標準目錄檢索STEMS 2000"
Printer.FontName = "黑體"
dd = prnt11(strx, stry, 10, txt, 50)
stry = stry + rowlab * 240
Printer.Line (0, stry)-(9000, stry)
Printer.FontName = "宋體"
txt = "標準號:" + Space(2) + Trim(Text1) + Space(3) +
"發布日期:" + Trim(Text4) + Space(3) + "實施日期:"
+ Trim(Text6) + Space(3) + "修定日期:" + Trim(Text5) '+ Chr(13)
stry = stry + 240
dd = prnt11(strx, stry, 10, txt, 70)
stry = stry + rowlab * 240
txt = "代替標準:"
dd = prnt11(strx, stry, 10, txt, 10)
dd = prnt11(strx + 1000, stry, 10, Trim(Text7), 60)
stry = stry + rowlab * 240
txt = "標準名稱:"
dd = prnt11(strx, stry, 10, txt, 10)
dd = prnt11(strx + 1000, stry, 10, Trim(Text4), 38)
stry = stry + rowlab * 240
txt = "英文名稱:"
dd = prnt11(strx, stry, 10, txt, 10)
dd = prnt11(strx + 1000, stry, 10, Text5, 72)
Printer.EndDoc
End Sub

---- 注: Prnt11函數原形:prnt11(X As Integer, Y As Integer, Font As Single, Txt As String, Val As Integer),其各參數含義如下:

---- X、Y為待打印字符串左上角起始座標;

---- Font為字體大小;

---- Txt為待打印字符串;

---- Val為字符串打印折行長度。

---- 實例2:直接打印表格式窗體顯示的多記錄多字段,往往因某些字段的字節太多而造成紙張寬度不足。以下 CmdPrnt2的Click事件中的代碼,實現了對上述MSFGrid1表格記錄的打印:

Private Sub CmdPrnt2_Click()
Dim fnt As Single
Dim pp As Integer
Dim stry As Integer, strx As Integer
Dim stry1 As Integer,
strx1 As Integer, linw As Integer
Dim page1 As Integer, p As Integer,
gridrow As Integer, ii As Integer
p = 0
ii = 1  'ii記錄MSFGRID1表格同一記錄內字段最大打印行
pp = 0 '開始頁碼
ss$ = "中國出入境檢驗檢疫標準目錄檢索STEMS 2000" ' 表頭
Static a(4) As Integer
kan = 0
a(2) = 1680
a(3) = 2800
a(4) = 5300
page1 = 46 '定義每頁行數
  strx = 200
  strx1 = 200
  stry = 1400
  stry1 = 1400
  linw = 240 '定義行寬
  fnt = 10 '定義字體大小
  For i = 2 To 4
      kan = kan + a(i)
  Next
  gridrow = Datdatact1.Recordset.RecordCount
  If gridrow = 0 Then
     MsgBox "無滿足條件記錄打印!"
     Exit Sub
End If
  Printer.FontName = "黑體"
  dd = prnt11(3300, 700, fnt, ss$, 26) '打印標題
  dd = prnt11(500, stry - 250, fnt, "標準號", 26)
  dd = prnt11(2690, stry - 250, fnt, "標準名稱", 26)
  dd = prnt11(6690, stry - 250, fnt, "英文名稱", 26)
  Printer.Line (strx - 20, stry - 30)-(10460, stry - 30)
  Printer.FontName = "宋體"
  For j = 1 To gridrow  '打印gridrow條記錄
       MSFGrid1.Row = j
       strx = strx1
       For i = 2 To 4 '假設只打印2-3 列
         MSFGrid1.Col = i
         dd = prnt11(strx, stry, fnt,
MSFGrid1.Text, IIf(i = 3, 13, 55))
         If ii < rowlab Then
'ii記錄同一記錄內字段最大打印行
           ii = rowlab
         End If
         strx = strx + a(i)
       Next
       p = p + ii
       rowlab = ii
       ii = 1 '重新初始化
       If p > page1 Then
           p = 0
           strx = strx1
           For n = 2 To 4
             strx = strx + a(n)
           Next
           pp = pp + 1
           stry = stry + rowlab * linw
           foot$ = "第" + CStr(pp) + "頁"
           dd = prnt11(strx / 2, stry + 3 * linw, 10, foot$, 26)
           stry = stry1
           Printer.NewPage
           Printer.FontName = "黑體"
           dd = prnt11(3300, 700, fnt, ss$, 26)
           dd = prnt11(500, stry - 250, fnt, "標準號", 26)
           dd = prnt11(2690, stry - 250, fnt, "標準名稱", 26)
           dd = prnt11(6690, stry - 250, fnt, "英文名稱", 26)
           Printer.Line (-20, stry - 30)-(10460, stry - 30)
           '打印起始線
           Printer.FontName = "宋體"
           strx = strx1
         Else
           stry = stry + rowlab * linw
         End If
      Next
      If p < page1 Then
          For p = 0 To page1 + 1
             strx = strx1
          Next
      End If
      strx = strx1
      For n = 2 To 4
          strx = strx + a(n)
      Next
      pp = pp + 1
      foot$ = "第" + CStr(pp) + "頁"
      dd = prnt11(strx / 2, stry + 3 * linw, 10, foot$, 26)
      Printer.EndDoc
  End Sub

---- 以上程序在簡體中文Windows98、VB5.0環境中調試通過。  
  資料來源:孔祥軍 蘇悅娟

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
波多野结衣中文一区| 美女久久一区| heyzo一本久久综合| 国产精品一区一区三区| 精品一区二区在线视频| 老司机精品视频一区二区三区| 婷婷成人综合网| 舔着乳尖日韩一区| 91视视频在线直接观看在线看网页在线看| 国产成人无遮挡在线视频| 免费视频最近日韩| 久久99久久精品| 国产精品亚洲а∨天堂免在线| 九九九精品视频| 懂色av中文一区二区三区| 国产.精品.日韩.另类.中文.在线.播放| 精品一区二区综合| 成人av在线资源网| 欧美日韩精品综合| 国产乱人伦精品一区二区| 久久只有精品| 欧美精品免费视频| 久久先锋影音av鲁色资源网| 国产日本欧洲亚洲| 亚洲亚洲人成综合网络| 免费在线观看一区| 成人一区二区三区| 国产精品大全| 久久国产欧美精品| 在线播放一区二区三区| 国产亚洲欧美一区在线观看| 亚洲女人****多毛耸耸8| 奇米精品一区二区三区四区| 国产精品18久久久久久久久| 欧美特黄一级| 色一区在线观看| 精品国产乱码久久久久久夜甘婷婷 | 国产高清久久久久| 韩国一区二区三区美女美女秀| 羞羞答答国产精品www一本| 欧美视频完全免费看| 国产午夜精品一区二区三区视频 | 久久久夜色精品亚洲| 亚洲欧美日韩精品久久久久| 日本免费在线视频不卡一不卡二| 成人污视频在线观看| 国产精品国产亚洲精品看不卡15| 久久视频一区| 久久久久国产精品免费免费搜索| 亚洲成av人片| 成人午夜在线播放| 国产精品毛片| 日韩精品一区二区三区老鸭窝| 亚洲蜜臀av乱码久久精品蜜桃| 国产呦萝稀缺另类资源| 亚洲国产99| 91精品国产91久久久久久最新毛片| 国产精品国产自产拍高清av| 精品亚洲免费视频| 国产精品日韩欧美一区二区| 国产精品福利影院| 国产毛片精品国产一区二区三区| 欧美在线不卡| 午夜亚洲福利| 在线中文字幕不卡| 亚洲国产岛国毛片在线| 精品影视av免费| 国产精品试看| 中文字幕不卡一区| 国产精品一区二区你懂的| 国产伦精品一区二区| 国产人妖乱国产精品人妖| 精品午夜久久福利影院| 国产精品一区视频| 国产精品久久久久毛片软件| 高清国产一区二区| 欧美伊人精品成人久久综合97| 综合久久综合久久| 色综合色综合色综合色综合色综合| 老**午夜毛片一区二区三区| 亚洲欧洲精品成人久久奇米网| 日韩和欧美一区二区三区| 在线播放不卡| 国产三级久久久| 97久久超碰精品国产| 欧美日韩www| 久久99热狠狠色一区二区| 噜噜噜噜噜久久久久久91| 亚洲免费观看高清在线观看| 亚洲午夜久久久久久尤物| 国产日产欧美一区二区视频| av亚洲精华国产精华精| 精品国产精品网麻豆系列 | 国产·精品毛片| 7777精品伊人久久久大香线蕉完整版| 日韩电影在线免费看| 一本色道**综合亚洲精品蜜桃冫| 洋洋av久久久久久久一区| 亚洲三级国产| 亚洲另类春色国产| 国产日韩三区| 亚洲6080在线| 国产午夜精品一区二区三区嫩草| 欧美疯狂做受xxxx富婆| 日本欧美大码aⅴ在线播放| 国产精品久久久久9999高清| 一区二区三区欧美久久| 99av国产精品欲麻豆| 一区二区三区在线播放| 亚洲精品影院在线观看| 一二三四区精品视频| 亚洲欧美99| 久久精品免费观看| 欧美男女性生活在线直播观看| 国产精品综合视频| 久久亚洲影视婷婷| 国内揄拍国内精品久久| 国产一区二区三区免费看| 欧美日韩国产高清一区二区| 激情欧美日韩一区二区| 日韩精品一区二区三区四区视频| 成人毛片视频在线观看| 国产人伦精品一区二区| 国产欧美欧美| 精品无人码麻豆乱码1区2区 | 欧美日韩免费观看一区=区三区| 久久欧美中文字幕| 在线精品一区二区| 午夜一区二区三区视频| 91精品国产综合久久精品图片| 成人午夜视频在线| 中文字幕在线播放不卡一区| 亚欧成人精品| 懂色av一区二区夜夜嗨| 亚洲人午夜精品天堂一二香蕉| 蜜桃视频一区| 99久久99久久综合| 一区二区成人在线观看| 51精品秘密在线观看| 午夜久久资源| 蜜桃视频第一区免费观看| 精品国产sm最大网站免费看| 福利一区福利二区| 国产精品日韩精品欧美在线| 国产日韩欧美一区二区三区在线观看 | 在线免费观看一区二区三区| 欧美bbbbb| 亚洲国产精品成人久久综合一区| 久久欧美肥婆一二区| 成人午夜免费视频| 亚洲成a人片综合在线| 日韩午夜在线观看视频| 亚洲人成久久| 国产精品一级片在线观看| 亚洲视频你懂的| 欧美一区二区久久| 香蕉久久夜色精品| av在线综合网| 蜜臀av一区二区在线免费观看| 欧美国产日产图区| 欧美精品乱人伦久久久久久| 一本久道久久久| 成人高清视频在线观看| 日本欧美在线看| 亚洲欧洲日韩在线| 日韩免费一区二区| 国产精品久久久久久久久久免费看 | 午夜日韩在线电影| 国产精品视频一二三| 欧美片网站yy| 久久激情综合| 欧美日韩精选| 成人av午夜影院| 久久精品国产99| 亚洲综合免费观看高清完整版| 2021国产精品久久精品| 欧美日韩成人高清| 久久久久久一区二区| 在线看片欧美| 欧美精品麻豆| hitomi一区二区三区精品| 国产资源精品在线观看| 午夜视频一区在线观看| 亚洲欧美激情在线| 国产精品久久夜| 久久青草国产手机看片福利盒子| 欧美高清dvd| 欧美在线影院一区二区| 国产农村妇女精品一二区| 91女厕偷拍女厕偷拍高清| 国产乱码精品一区二区三区av| 日本人妖一区二区| 亚洲国产一区二区三区| 一区二区在线观看视频| 国产乱子伦视频一区二区三区| 亚洲激情中文1区| 亚洲色图色小说| ●精品国产综合乱码久久久久| 国产亚洲婷婷免费| 国产午夜三级一区二区三|