Public Function GetElapsedTime(tStart, tStop) As String
'//Place This Code in a Module
Public PrinterPresent As Boolean
'Print module v3
'sub PrintString
'PrintString Text, leftfmargin, rightmargin, topmargin, bottommargin
'margins are long values 0-100 percent
Option Explicit
Public Function PrintString(printVar As String, leftMargePrcnt As Long, rightMargePrcnt As Long, topMargePrcnt As Long, bottomMargePrcnt As Long)
Dim lMarge As Long
Dim rMarge As Long
Dim tMarge As Long
Dim bMarge As Long
Dim printLijn As String
Dim staPos As Long
Dim endPos As Long
Dim txtHoogte As Long
Dim printHoogte As Long
Dim objectHoogte As Long
Dim objectBreedte As Long
Dim currYpos As Long
Dim cutChar As String
Dim k As Long
Dim cutPos As Long
On Error Resume Next
Screen.MousePointer = 11
Printer.FontName = "Courier New"
Printer.FontSize = 10
Printer.FontBold = False
Printer.FontItalic = False
Printer.FontUnderline = False
Printer.FontStrikethru = False
txtHoogte = Printer.TextHeight("AbgWq")
lMarge = Int((Printer.Width / 100) * leftMargePrcnt)
rMarge = Int((Printer.Width / 100) * rightMargePrcnt)
tMarge = Int((Printer.Height / 100) * topMargePrcnt)
bMarge = Int((Printer.Height / 100) * bottomMargePrcnt)
objectHoogte = Printer.Height - tMarge - bMarge
objectBreedte = Printer.Width - lMarge - rMarge
Printer.CurrentY = tMarge
staPos = 1
endPos = 0
Do
'get next line to crlf
endPos = InStr(staPos, printVar, vbCrLf)
If endPos <> 0 Then
printLijn = Mid(printVar, staPos, endPos - staPos)
Else
printLijn = Mid(printVar, staPos)
endPos = Len(printVar)
End If
'check lenght one line
If Printer.TextWidth(printLijn) <= objectBreedte Then
'line ok, keep line as it is
staPos = endPos + 2
Else
'line to big, try to cut of at space or other signs within limits
cutPos = 0
For k = 1 To Len(printLijn)
cutChar = Mid(printLijn, k, 1)
If cutChar = " " Or cutChar = "." Or cutChar = "," Or cutChar = ":" Or cutChar = ")" Then
If Printer.TextWidth(Left(printLijn, k)) > objectBreedte Then Exit For
cutPos = k
End If
Next k
'check result search for space
If cutPos > 1 Then
'cut off on space
printLijn = Mid(printVar, staPos, cutPos)
staPos = staPos + cutPos
Else
'no cut-character found within limits, so cut line on paperwidth
For k = 1 To Len(printLijn)
If Printer.TextWidth(Left(printLijn, k)) > objectBreedte Then Exit For
Next k
printLijn = Mid(printVar, staPos, k - 1)
staPos = staPos + (k - 1)
End If
End If
'print line
Printer.CurrentX = lMarge
currYpos = Printer.CurrentY + txtHoogte
If currYpos > (tMarge + objectHoogte) - txtHoogte Then
Printer.NewPage
Printer.CurrentY = tMarge
Printer.CurrentX = lMarge
End If
Printer.Print printLijn
Loop While staPos < Len(printVar)
Printer.EndDoc
Screen.MousePointer = 0
End Function
'Alignements
Function AlignLeft(NData, CFormat) As String
If NData > 0 Then 'if not empty string
AlignLeft = Format(NData, CFormat)
AlignLeft = AlignLeft + Space(Len(CFormat) - Len(AlignLeft))
Else 'empty string
AlignLeft = Format(NData, CFormat)
AlignLeft = "" + Space(Len(CFormat) - 1)
End If
End Function
'This will make a string right align (usualy just for
'text in currency or number of something or numeric data)
Function AlignRight(NData, CFormat) As String
If NData > 0 Then
AlignRight = Format(NData, CFormat)
AlignRight = Space(Len(CFormat) - Len(AlignRight)) + AlignRight
Else
AlignRight = Format(NData, CFormat)
AlignRight = Space(Len(CFormat) - 1) + "0"
End If
End Function
Print String
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment
Post Comments
Do you have any suggestions ? Add comment. Do not spam!