狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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视频
欧美中文字幕一区| 国内精品久久久久久久果冻传媒| 国产成人亚洲精品青草天美| 女女同性女同一区二区三区91| 日韩图片一区| 欧美一二三区在线| 亚洲18女电影在线观看| 成人小视频免费在线观看| 亚洲巨乳在线| 日韩视频中午一区| 午夜影院在线观看欧美| 91在线播放网址| 日本韩国欧美一区| 国产精品女主播av| 国产成人综合在线播放| 亚洲欧美日韩国产一区| 久久精品人人做| 国产尤物一区二区| 亚洲影音一区| 国产日产亚洲精品系列| 久久99精品久久久久| 亚洲日韩视频| 国产日韩欧美在线一区| 国产一区二区网址| 亚洲免费网站| 亚洲天天做日日做天天谢日日欢| 国产成人日日夜夜| 欧美丝袜自拍制服另类| 亚洲一区二区三区中文字幕在线| 欧美一区2区三区4区公司二百| 日韩电影在线观看一区| 色婷婷久久久亚洲一区二区三区| 日韩中文字幕亚洲一区二区va在线| 久久久久久亚洲精品杨幂换脸| 日产国产欧美视频一区精品| 在线视频你懂得一区二区三区| 久久激情五月婷婷| 精品美女一区二区三区| 午夜日韩在线| 亚洲一级在线观看| 欧美在线观看一区| 成人免费高清在线| 国产精品视频一二| 亚洲一区国产| 狠狠色丁香久久婷婷综合丁香| 欧美一区二区在线观看| 欧美片网站免费| 亚洲韩国一区二区三区| 欧美人妇做爰xxxⅹ性高电影| 国产成人午夜精品影院观看视频| 五月婷婷欧美视频| 91精品国产综合久久久久久久| 99久久精品99国产精品| 亚洲乱码中文字幕| 欧美日本在线一区| 色综合久久中文字幕综合网| 一区二区三区四区不卡在线 | 精品免费日韩av| 亚洲精品社区| 精久久久久久久久久久| 国产日韩av一区二区| 免费亚洲网站| 成人免费毛片aaaaa**| 亚洲少妇中出一区| 欧美日韩免费高清一区色橹橹| 91丨九色丨尤物| 日韩精品91亚洲二区在线观看| 欧美成人伊人久久综合网| 亚洲国产裸拍裸体视频在线观看乱了中文| 首页国产丝袜综合| 久久精品视频一区二区| 久久男女视频| 欧美高清一区二区| 久久精品国产成人一区二区三区| 国产亚洲精品久| 日本韩国一区二区| 黄色另类av| 国产精品1024| 亚洲午夜免费福利视频| 欧美不卡一区二区| 色综合久久久久综合99| 欧美一区1区三区3区公司| 美国av一区二区| 中文字幕中文在线不卡住| 欧美日韩不卡在线| 夜久久久久久| 91视频一区二区三区| 99视频一区二区三区| 中文字幕一区二区三区四区不卡| 国产欧美日韩综合一区在线观看 | 久久综合资源网| 影音先锋久久久| 日韩中文字幕麻豆| 精品国产免费一区二区三区四区| 午夜日韩激情| 天堂久久久久va久久久久| 欧美久久久一区| 欧美日韩综合| 男女男精品视频网| gogogo免费视频观看亚洲一| 亚洲香肠在线观看| 中文字幕精品一区二区三区精品| 欧美电影一区二区三区| 久久蜜桃精品| 99在线|亚洲一区二区| 91小视频在线观看| 国v精品久久久网| 久久机这里只有精品| 午夜亚洲福利老司机| ㊣最新国产の精品bt伙计久久| 精品国产凹凸成av人网站| 欧美日韩视频在线观看一区二区三区| 亚洲少妇一区| 亚洲日本视频| 精品成人在线| 黄色亚洲精品| 国产精品v日韩精品v欧美精品网站 | 国产日韩欧美a| 精品国产精品网麻豆系列 | 色偷偷成人一区二区三区91| 一本色道久久综合一区| 欧美性色综合| 欧美欧美天天天天操| 色综合咪咪久久| www.日韩在线| 99久久精品费精品国产一区二区| 国产传媒一区在线| 国产精品69久久久久水密桃| 黄一区二区三区| 国产一区二区在线电影| 激情五月激情综合网| 久久91精品国产91久久小草| 日本在线不卡视频| 毛片一区二区三区| 国内成人精品2018免费看| 久久se这里有精品| 国产乱码精品一区二区三区五月婷| 激情综合色综合久久综合| 激情综合亚洲精品| 国产成人免费网站| 白白色 亚洲乱淫| 欧美a级一区| 国色天香一区二区| 亚洲精品日韩在线观看| 香蕉精品999视频一区二区| 久久久99爱| 欧美精品一卡两卡| 日韩精品中文字幕在线一区| 精品成人在线观看| 日本一区二区成人在线| 亚洲久本草在线中文字幕| 亚洲一区二区三区四区的| 日韩电影一区二区三区| 国内外成人在线| caoporn国产一区二区| 欧美日韩18| 亚洲欧美清纯在线制服| 婷婷六月综合亚洲| 久久蜜桃av一区二区天堂| 日韩一本二本av| 日韩欧美中文一区二区| 日韩精品久久理论片| 99av国产精品欲麻豆| 国产欧美日韩综合| 国产精品亚洲а∨天堂免在线| 91精品国产免费久久综合| 大美女一区二区三区| 91精品国产福利在线观看 | 免费成人在线视频观看| 午夜精品久久久久久久99水蜜桃| 午夜精品久久久久久久99水蜜桃| 美女一区二区三区在线观看| 国产99久久久国产精品免费看| 97se亚洲国产综合自在线不卡| 亚洲高清免费| 欧美亚洲图片小说| 国产三区在线成人av| 亚洲国产综合在线| 高清不卡在线观看av| 国内不卡一区二区三区| 色老汉av一区二区三区| 精品国产免费久久 | 亚洲福中文字幕伊人影院| 国模冰冰炮一区二区| 懂色av噜噜一区二区三区av| 国产综合亚洲精品一区二| 日本久久电影网| 亚洲激情图片一区| 日韩国产精品久久久久久亚洲| 日韩avvvv在线播放| 国产中文字幕一区| 99在线视频精品| 亚洲激情国产| 欧洲一区二区三区免费视频| 日韩三级在线观看| 日本一二三四高清不卡| 喷水一区二区三区| 成人av电影在线观看| 狠狠入ady亚洲精品| 久久久精品动漫|