⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmprintpreview.frm

📁 小型企业进销存源代码 一款小型企业进销存源代码
💻 FRM
字号:
VERSION 5.00
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "Comdlg32.ocx"
Begin VB.Form frmPrintPreview 
   Caption         =   "材料消耗----打印预览"
   ClientHeight    =   8190
   ClientLeft      =   1830
   ClientTop       =   2490
   ClientWidth     =   12225
   Icon            =   "frmPrintPreview.frx":0000
   LinkTopic       =   "Form2"
   MouseIcon       =   "frmPrintPreview.frx":27A2
   ScaleHeight     =   8190
   ScaleWidth      =   12225
   WindowState     =   2  'Maximized
   Begin VB.PictureBox picPrint 
      Height          =   1476
      Left            =   1872
      ScaleHeight     =   1410
      ScaleWidth      =   1530
      TabIndex        =   1
      Top             =   3672
      Width           =   1596
   End
   Begin MSComDlg.CommonDialog dlgPrint 
      Left            =   1296
      Top             =   4320
      _ExtentX        =   688
      _ExtentY        =   688
      _Version        =   393216
   End
   Begin VB.Frame frameA 
      Caption         =   "Frame1"
      Height          =   2940
      Left            =   1032
      MouseIcon       =   "frmPrintPreview.frx":2AAC
      TabIndex        =   0
      Top             =   504
      Width           =   2916
      Begin VB.Image imgView 
         Height          =   1932
         Index           =   1
         Left            =   288
         MouseIcon       =   "frmPrintPreview.frx":2DB6
         MousePointer    =   99  'Custom
         Top             =   624
         Width           =   1764
      End
   End
   Begin VB.Menu mnuFile 
      Caption         =   "档案"
      Begin VB.Menu mnuSetup 
         Caption         =   "版面设定 ..."
      End
      Begin VB.Menu mnuPrint 
         Caption         =   "列印 ..."
      End
      Begin VB.Menu mnuSep1 
         Caption         =   "-"
      End
      Begin VB.Menu mnuClose 
         Caption         =   "关闭"
      End
   End
   Begin VB.Menu mnuView 
      Caption         =   "检视"
      Begin VB.Menu mnuView100 
         Caption         =   "100%"
      End
      Begin VB.Menu mnuViewFullPage 
         Caption         =   "整页"
      End
      Begin VB.Menu mnuViewCustomize 
         Caption         =   "自订百分比 ..."
      End
      Begin VB.Menu mnuSep2 
         Caption         =   "-"
      End
      Begin VB.Menu mnuViewPage 
         Caption         =   "切换页码 ..."
      End
   End
   Begin VB.Menu mnuHelp 
      Caption         =   "说明"
   End
End
Attribute VB_Name = "frmPrintPreview"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'****************************************************************************
'人人为我,我为人人
'枕善居汉化收藏整理
'发布日期:2007/05/02
'描    述:小型企业进销存源代码
'网    站:http://www.Mndsoft.com/  (VB6源码博客)
'网    站:http://www.VbDnet.com/   (VB.NET源码博客,主要基于.NET2005)
'e-mail  :Mndsoft@163.com
'e-mail  :Mndsoft@126.com
'OICQ    :88382850
'          如果您有新的好的代码别忘记给枕善居哦!
'****************************************************************************
'1.程式名称:预览列印
'2.开发日期:09/02/1999
'3.开发环境:Visual Basic 5.0 中文专业版 + SP3
'4.作者姓名:宋世杰 (小翰,Jaric)
'5.作者信箱:jaric@tacocity.com.tw
'6.作者网址:http://fly.to/jaric 或 http://tacocity.com.tw/jaric
'7.网址名称:Visual Basic 实战网
'8.注意事项:您可以任意散布本程式,但是请勿将以上说明删除,谢谢!
'                     如果本程式经过您的修改,可以在下方加入您的个人资讯。
Option Explicit
Private Const dblHWRATIO As Double = 297 / 210 'A4纸张的长宽比
Private Const dblWHRATIO As Double = 210 / 297 'A4纸张的宽长比
Private Const lngVSPACE As Long = 100 '页与页之间的垂直距离   单位:twips
Private lngPages As Long '储存列印页数
Private lngViewRatio As Long '显示比例 ,介于 0 ~ 无限大的数值,通常输入0~100即可
Private gX As Long, gY As Long '移动图形之前储存的座标
'lngZoom是代表将资料列印到 PictureBox 时的比例,介于 0 ~ 无限大的数值
'通常输入0~100即可 ,愈大的数值将耗用较多的记忆体 , 同时缩小后易失真
'愈小的数值耗用的记忆体较少 ,但是放大后易失真,
'请不要将lngZoom与 lngViewRatio 搞混,lngViewRatio是图形绘制好之后在 imgView之内的显示比例
'若将 blnRePrint=True 则每次改变 lngViewRatio 都会重新呼叫 PrintResult 来绘图
'这样预览列印的结果将没有失真之虞 ,但是速度较慢
'若 blnRePrint=false , 则每次改变 lngViewRatio 并不会重新绘图 ,而是直接改变 imgView的大小以符合新的显示比例
'这样速度很快 ,但是预览列印的结果会失真
Public lngZoom As Long
Public blnRePrint As Boolean

Private Sub Form_Load()
     frameA.Caption = ""
     frameA.BorderStyle = vbBSNone
     imgView(1).BorderStyle = vbBSNone
     imgView(1).Width = glngPAPERW
     imgView(1).Height = glngPAPERH
     imgView(1).Stretch = True
     picPrint.BorderStyle = vbBSNone
     picPrint.BackColor = vbWhite
     picPrint.ScaleMode = vbTwips
     picPrint.AutoRedraw = True
     picPrint.Visible = False
     If lngZoom = 0 Then lngZoom = 100
     If Not blnRePrint Then
          Call gobjFormToPrint.PrintResult(picPrint, lngZoom)
          lngPages = imgView.count
     End If
     lngViewRatio = 100
     Call ChangeRatio
End Sub

Private Sub Form_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
     If Button = vbRightButton Then PopupMenu mnuView
End Sub

Private Sub Form_Resize()
     Call FramePosition
End Sub

Private Sub Form_Unload(Cancel As Integer)
     Dim i As Long
     For i = lngPages To 2 Step -1
          Set imgView(i).Picture = LoadPicture()
          Unload imgView(i)
     Next
     Set imgView(1).Picture = LoadPicture()
     picPrint.AutoRedraw = False
End Sub

Private Sub frameA_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
     gX = x
     gY = y
     If Button = vbRightButton Then PopupMenu mnuView
End Sub

'frameA 比表单小时一定要位于表单的中央,以下的程式码才能work
Private Sub frameA_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
     If Not Button = vbLeftButton Then Exit Sub
     Dim dx As Long, dy As Long, ax As Long, ay As Long, t As Long, l As Long, tt As Long, ll As Long
     With frameA
          dy = y - gY
          dx = x - gX
          ll = .Left
          tt = .Top
          l = Abs(ll)
          t = Abs(tt)
          ax = (.Width - l - ScaleWidth)
          ay = (.Height - t - ScaleHeight)
          If ll > 0 Then
               dx = 0
          Else
               If dx < 0 Then
                    If Abs(dx) > ax Then dx = -ax
               Else
                    If dx > l Then dx = l
               End If
          End If
          If tt > 0 Then
               dy = 0
          Else
               If dy < 0 Then
                    If Abs(dy) > ay Then dy = -ay
               Else
                    If dy > t Then dy = t
               End If
           End If
          .Move ll + dx, tt + dy
     End With
End Sub

Private Sub mnuClose_Click()
     Unload Me
End Sub

Private Sub mnuHelp_Click()
     Dim s As String
     s = "1. 虚线是代表列印的边界,真正列印时不会印出来。" & vbNewLine
     s = s & "2. 这个程式没有卷轴,但是用滑鼠拖曳图片就可以看到所有的列印资料。" & vbNewLine
     s = s & "3.如果要在每次改变显示比例时都重新绘图,请至功能表的 /档案/版面设定/ 内设定。" & vbNewLine
     s = s & "4. 在表单上按滑鼠右键亦可显示 ""检视"" 功能表。"
     MsgBox s
End Sub

Private Sub mnuPrint_Click()
     On Error GoTo ErrorTrap
     Dim i As Long
     dlgPrint.CancelError = True
     dlgPrint.PrinterDefault = True
     dlgPrint.Flags = cdlPDDisablePrintToFile + cdlPDNoSelection  '+ cdlPDUseDevModeCopies
     dlgPrint.ShowPrinter
     For i = 1 To dlgPrint.Copies
          Call gobjFormToPrint.PrintResult(Printer, lngZoom)
     Next
ErrorTrap:
End Sub

Private Sub mnuSetup_Click()
     Dim lngTM As Long, lngBM As Long, lngLM As Long, lngRM As Long
     Dim i As Long, plngZoom As Long
     lngTM = glngTopMargin
     lngBM = glngBottomMargin
     lngLM = glngLeftMargin
     lngRM = glngRightMargin
     plngZoom = lngZoom
     frmPrintSetup.Show vbModal, Me
     ' 检查边界值是否被更改过 ,若是则重新列印资料以符合新的边界值
     If lngTM <> glngTopMargin Or lngBM <> glngBottomMargin Or lngLM <> glngLeftMargin _
     Or lngRM <> glngRightMargin Or plngZoom <> lngZoom Then
          If Not blnRePrint Then Call gobjFormToPrint.PrintResult(picPrint, lngZoom)
          Call ChangeRatio
     End If
End Sub

Private Sub mnuView100_Click()
     If lngViewRatio = 100 Then Exit Sub '如果目前显示的比例与期望的比例相同 , 则不要重新绘图
     lngViewRatio = 100
     Call ChangeRatio
End Sub

Private Sub mnuViewCustomize_Click()
     Dim x As String
     x = InputBox("请输入欲显示的百分比,", "材料消耗客户版软件", CLng(lngViewRatio))
     If Trim(x) = "" Then Exit Sub
     If Not IsNumeric(x) Or InStr(x, ",") > 0 Or InStr(x, "-") > 0 Or Val(x) = 0 Then
          MsgBox "您输入的数值有误,请重新输入"
     Else
          If lngViewRatio = CLng(x) Then Exit Sub '如果目前显示的比例与期望的比例相同 , 则不要重新绘图
          lngViewRatio = CLng(x)
          Call ChangeRatio
     End If
End Sub

Private Sub mnuViewFullPage_Click()
     Call FullPage
End Sub

Private Sub mnuViewPage_Click()
     Dim x As String, n As Long
     x = InputBox("请输入欲显示的页码,", "材料消耗客户版软件", "1")
     If Trim(x) = "" Then Exit Sub
     If Not IsNumeric(x) Or InStr(x, ",") > 0 Or InStr(x, ".") > 0 Then
          MsgBox "请输入大于 0 并且不大于 " & lngPages & " 之整数"
     Else
          n = CLng(x)
          If n <= 0 Or n > lngPages Then
               MsgBox "请输入大于 0 并且不大于 " & lngPages & " 之整数"
               Exit Sub
          Else
               Call ChangePage(n)
          End If
     End If
End Sub

Private Sub imgView_MouseDown(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
     gX = x
     gY = y
     Call changeCaption(Index)
     If Button = vbRightButton Then PopupMenu mnuView
End Sub

Private Sub imgView_MouseMove(Index As Integer, Button As Integer, Shift As Integer, x As Single, y As Single)
     Call frameA_MouseMove(Button, Shift, x, y)
End Sub

Private Sub ChangeRatio()
     Dim i As Long, w As Long
     If blnRePrint Then
          lngZoom = lngViewRatio
          Call gobjFormToPrint.PrintResult(picPrint, lngZoom)
          lngPages = imgView.count
     End If
     w = glngPAPERW * (lngViewRatio / 100)
     For i = 1 To lngPages
          imgView(i).Move 0, (i - 1) * (w * dblHWRATIO + lngVSPACE), w, w * dblHWRATIO
     Next
     frameA.Move 0, 0, imgView(1).Width, (imgView(1).Height + lngVSPACE) * lngPages
     Call FramePosition
End Sub

Private Sub FullPage()
     Dim i As Long, w As Long, h As Long, wBase As Boolean, ratio As Long
     w = ScaleWidth
     h = ScaleHeight
     If CDbl(w / h) >= dblWHRATIO Then
          ratio = h / glngPAPERH * 100
          '如果目前显示的比例与期望的比例相同 , 则不要重新绘图
          If lngViewRatio = ratio Then Exit Sub Else lngViewRatio = ratio
     Else
          ratio = w / glngPAPERW * 100
          If lngViewRatio = ratio Then Exit Sub Else lngViewRatio = ratio: wBase = True
     End If
     If blnRePrint Then
          lngZoom = lngViewRatio
          Call gobjFormToPrint.PrintResult(picPrint, lngZoom)
          lngPages = imgView.count
     End If
     For i = 1 To lngPages
          If wBase Then
               imgView(i).Move 0, (i - 1) * (w * dblHWRATIO + lngVSPACE), w, w * dblHWRATIO
          Else
               imgView(i).Move 0, (i - 1) * (h + lngVSPACE), h * dblWHRATIO, h
          End If
     Next
     frameA.Move 0, 0, imgView(1).Width, (imgView(1).Height + lngVSPACE) * lngPages
     Call FramePosition
End Sub

Private Sub ChangePage(n As Long)
     frameA.Move frameA.Left, -(imgView(1).Height + lngVSPACE) * (n - 1)
     Call changeCaption(n)
End Sub

Private Sub FramePosition()
     Dim w As Long, h As Long, fw As Long, fh As Long
     fw = frameA.Width
     fh = frameA.Height
     w = ScaleWidth
     h = ScaleHeight
     If fh < h And fw < w Then
          frameA.Move (w - fw) / 2, (h - fh) / 2
     ElseIf fh < h Then
          frameA.Move 0, (h - fh) / 2
     ElseIf fw < w Then
          frameA.Move (w - fw) / 2, 0
     Else
          frameA.Move 0, 0
     End If
     Call changeCaption(1)
End Sub

Public Sub changeCaption(ByVal n As Long)
     Caption = ManText & "- 预览列印" & " ( 共有 " & lngPages & " 页,这是第 " & n & " 页,显示比例:" & CLng(lngViewRatio) & "%)"
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -