VB中打印预览画面和打印出来的画面不一至,请高手解决!
VB中打印预览画面和打印出来的画面不一至,(打印出来的用的是B4纸)请高手解决!
下面有打印预览画面控件的代码,请哪位高手指教.
Private Sub Form_Load()
PageScale(0).iID = 1
PageScale(0).sngScale = 1.9
PageScale(0).iPageLandscape = 860
PageScale(0).iPagePortrait = 870
PageScale(1).iID = 2
PageScale(1).sngScale = 1.45
PageScale(1).iPageLandscape = 1130
PageScale(1).iPagePortrait = 1160
PageScale(2).iID = 3
PageScale(2).sngScale = 1
PageScale(2).iPageLandscape = 1680
PageScale(2).iPagePortrait = 1680
iScaleIndex = 1
ChangeWay = 0 'big
picPreView.MousePointer = 99
picPreView.MouseIcon = picZoom.Picture
Screen.MousePointer = vbDefault
If (iPageOrientation = "縦") Then
picPreView.Width = 7 * PageScale(iScaleIndex).iPagePortrait
picPreView.Height = 10 * PageScale(iScaleIndex).iPagePortrait
ElseIf (iPageOrientation = "横") Then
picPreView.Width = 10 * PageScale(iScaleIndex).iPageLandscape
picPreView.Height = 7 * PageScale(iScaleIndex).iPageLandscape
End If
Call PreViewPage(1, picPreView, PageScale(iScaleIndex).sngScale)
SetCmdEnable
Form_Resize
'picPreView.Top = 1
End Sub
Public Function PreViewPage(iPage As Integer, oParentPrinter As Object, sSale As Single) As Boolean
On Error Resume Next
Dim bQ As Boolean
bQ = ReadTempFile(iPage, oParentPrinter, sSale)
PreViewPage = True
End Function
Private Function ReadTempFile(iPage As Integer, oParentPrinter As Object, sSale As Single) As Boolean
On Error Resume Next
Dim sAppPath As String, sAppFileName As String, sFullFileName As String, FileNumber%
Dim sArray() As String, bQ As Boolean, LineStr As String, itempI As Integer
Dim icount As Integer
icount = 0
If TypeName(oParentPrinter) = "Printer" Then
For itempI = 1 To iPage
sAppPath = App.Path
sAppFileName = "APName_page_" & itempI & ".prt"
sFullFileName = sAppPath & "\" & sAppFileName
iNowPage = iPage
FileNumber% = FreeFile
Open sFullFileName For Input As #FileNumber%
While Not EOF(FileNumber%)
Line Input #FileNumber%, LineStr
sArray = Split(LineStr, "*|*")
If sArray(0) <> "1" And sArray(0) <> "2" And sArray(0) <> "3" Then 'FirstLine
If icount = 0 Then
bQ = bStartPrint(sArray(2))
'用紙種類設定
'デフォルト設定
oParentPrinter.PaperSize = vbPRPSA4
Select Case sArray(0)
Case "A5"
oParentPrinter.PaperSize = vbPRPSA5
Case "B5"
oParentPrinter.PaperSize = vbPRPSB5
Case "A4"
oParentPrinter.PaperSize = vbPRPSA4
Case "B4"
oParentPrinter.PaperSize = vbPRPSB4
Case "A3"
oParentPrinter.PaperSize = vbPRPSA3
Case Else
oParentPrinter.PaperSize = vbPRPSB5
End Select
'用紙方向設定
'デフォルト設定
oParentPrinter.Orientation = vbPRORPortrait
If (sArray(1) <> "") Then
If (sArray(1) = "縦") Then
oParentPrinter.Orientation = vbPRORPortrait
ElseIf (sArray(1) = "横") Then
oParentPrinter.Orientation = vbPRORLandscape
End If
End If
iPageOrientation = sArray(1)
icount = 1
End If
Else
bQ = DrawDetail(LineStr, oParentPrinter, sSale)
End If
Wend
Close #FileNumber%
oParentPrinter.NewPage
Next itempI
oParentPrinter.EndDoc 'GoPrinte
Else
sAppPath = App.Path
sAppFileName = "APName_page_" & iPage & ".prt"
sFullFileName = sAppPath & "\" & sAppFileName
iNowPage = iPage
FileNumber% = FreeFile
Open sFullFileName For Input As #FileNumber%
While Not EOF(FileNumber%)
Line Input #FileNumber%, LineStr
sArray = Split(LineStr, "*|*")
If sArray(0) <> "1" And sArray(0) <> "2" And sArray(0) <> "3" Then 'FirstLine
iPageOrientation = sArray(1)
Else
bQ = DrawDetail(LineStr, oParentPrinter, sSale)
End If
Wend
Close #FileNumber%
End If
ReadTempFile = True
End Function