Hi CarpeDiem,
platziere eine Picturebox1(Appearance=0) auf eine Form, sowie ein Commandbuttons-Steuerelementfeld mit drei Buttons (Name=cmdButton(0-2)).
füge folgenden Code in die Form ein
Option Explicit
Private Sub cmdButton_Click(Index As Integer)
Dim nTNr As Integer
Dim nSNr As Long
Dim sTippRow As String
'--- Teststring - kann gelöscht werden
sTippRow = "1,2,3,4,5,6,7,12,13,18,19,24,25,30,31,36,37,39,40,41,42,43,44,45"
Call Datenfelder_füllen
Select Case Index
Case 0 'Beenden
Unload Me
Case 1 'Schein drucken
Call Drucke_Tippreihe(Printer, 1, 1, sTippRow)
Printer.EndDoc
Case 2 'Schein anzeigen
'Hier per Schleife die Tippreihen einlesen und an den Drucker weiterleiten
' z.B.
For nTNr = 1 To 12
Call Drucke_Tippreihe(Picture1, 1, nTNr, sTippRow)
Next nTNr
'Hier ggf. Schleife beenden
End Select
End Sub ersetze den Code im Modul durch folgenden
Option Explicit
Public fTipp(44, 1) As Long
Public fSchein(11, 1) As Long
Public nRndTop As Long
Public nRndLeft As Long
Public Sub Drucke_Tippreihe(ByVal Destination As Object, _
ByVal nScheinNr As Long, ByVal nTippNr As Long, ByVal sReihe As String)
Dim fRow() As String
Dim x As Integer
fRow = Split(sReihe, ",")
For x = 0 To UBound(fRow)
With Destination
.CurrentY = fTipp(Val(fRow(x)) - 1, 0) + fSchein(nTippNr - 1, 0) + nRndTop
.CurrentX = fTipp(Val(fRow(x)) - 1, 1) + fSchein(nTippNr - 1, 1) + _
nRndLeft
Destination.Print "X"
End With
Next
End Sub
Public Sub Datenfelder_füllen()
Dim iLeft As Integer
Dim iTop As Integer
Dim x As Integer
'--- Array für Tippkästchen mit Positionswerten füllen
iTop = mmToTwips(270) / 7 'Hier müssen die Werte von Spiel1 zu Spiel2 (
' senkrecht)
iLeft = mmToTwips(190) / 5 'und Spiel1 zu Spiel11 (waagrecht) des
' Spielscheins
nRndTop = mmToTwips(194) 'sowie der Abstand vom Rand oben und Rand Links
' Eingetragen werden
nRndLeft = mmToTwips(37) 'Die Abmaße werden in 1/10 mm eingegeben
Erase fTipp 'Array Tippfeld löschen
For x = 0 To 44
fTipp(x, 0) = Fix(x / 6) * iTop
fTipp(x, 1) = (x Mod 6) * iLeft
'Debug.Print TwipsToMillimeter(fTipp(x, 0)), TwipsToMillimeter(fTipp(x, 1))
Next x
'--- Array für Spielschein mit Positionswerten füllen
iTop = mmToTwips(310)
iLeft = mmToTwips(1140) / 5
Erase fSchein 'Array Spielschein löschen
For x = 0 To 11
fSchein(x, 0) = Fix(x Mod 2) * iTop
fSchein(x, 1) = Fix(x / 2) * iLeft
'Debug.Print TwipsToMillimeter(fSchein(x, 0)), TwipsToMillimeter(fSchein(x,
' 1))
Next x
End Sub
Public Function mmToTwips(ByVal Zehntel As Long) As Long
Dim vItem As Variant
Dim dTmp As Double
vItem = Zehntel / 100
dTmp = 1440 * vItem
dTmp = dTmp / 2.54
If dTmp >= 0 And dTmp <= 32767 Then
mmToTwips = dTmp
Else
mmToTwips = 0
End If
End Function
Public Function TwipsToMillimeter(ByVal nTwips As Long) As Long
Dim vItem As Variant
Dim dTmp As Double
vItem = nTwips * 100
dTmp = vItem / 1440
dTmp = dTmp * 2.54
dTmp = CInt(dTmp)
If dTmp >= 0 And dTmp <= 32767 Then
TwipsToMillimeter = dTmp
Else
TwipsToMillimeter = 0
End If
End Function
Ein Klick auf cmdButton(2) zeigt die Kreuze in der Picturebox
Ein klick auf cmdButton(1) druckt sie.
CU,
VBRunner |