Hallo Manfred!
Ich hoffe, dass ich es nun halbwegs verstanden habe.
Global:
Dim ParentFileNames As List(Of String) = New List(Of String)
Dim ParentFileIndex As Integer = -1
Dim WithEvents prntdoc As New Printing.PrintDocument
Dim ImportFile As String Form load:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
System.EventArgs) _
Handles MyBase.Load
'...
ImportFile = TextBox1.Text & "\"
End Sub Die Liste füllen:
Private Sub ListenDruck()
Dim myDir As New DirectoryInfo(ImportFile)
Dim myFiles() As FileInfo
myFiles = myDir.GetFiles("*.dwg")
For Each MyFile In myFiles
ParentFileNames.Add(MyFile.Name)
Next
End Sub Die PrintPage erstellen:
Private Sub prntdoc_PrintPage(ByVal sender As System.Object, ByVal e As _
System.Drawing.Printing.PrintPageEventArgs) Handles prntdoc.PrintPage
Dim PositionX As Integer = e.MarginBounds.X * 25.4 \ 100 - 25
Dim PositionY As Integer = e.MarginBounds.Y * 25.4 \ 100 - 25
e.Graphics.PageUnit = GraphicsUnit.Millimeter
Dim gr As Graphics = e.Graphics
prntdoc.PrinterSettings.PrinterName = Me.P5_CB_Druckerauswahl.Text
' Startpositionen für X und Y festlegen
' ********************************************
Dim acXPos As VariantType = 15
Dim acYPos As VariantType = 5
' Die Bitmaps für ok und no bestimmen
' **********************************************
Dim ok As Bitmap = Me.ImageList1.Images(0)
Dim no As Bitmap = Me.ImageList1.Images(1)
' Die unterschiedlichen Schriftarten bzw. Höhen etc. definieren
' ********************
Dim MyFont14 As New System.Drawing.Font("Arial", 14, _
Drawing.FontStyle.Bold)
Dim MyFont12 As New System.Drawing.Font("Arial", 12, _
Drawing.FontStyle.Regular)
Dim MyFont10 As New System.Drawing.Font("Arial", 10, _
Drawing.FontStyle.Regular)
Dim fso As System.IO.File
Dim pageindex As Integer = 0
Dim parentfilename As String
Do While ParentFileIndex < ParentFileNames.Count - 1 AndAlso pageindex < 3
pageindex += 1
ParentFileIndex += 1
parentfilename = ParentFileNames(ParentFileIndex)
Dim BasicFileName As String
Label1.Text = ImportFile
BasicFileName = parentfilename.Remove(parentfilename.Length - 6, 6)
Dim BildName As String
BildName = BasicFileName & "_D.wmf"
'--Bild einfügen---
Dim BlockBild As Bitmap = New Bitmap(ImportFile & BildName)
gr.DrawImage(BlockBild, acXPos, acYPos + 30)
'--Dateinamen _D.dwg einfügen--
Dim FileName_D As String
FileName_D = BasicFileName & "_D.dwg"
gr.DrawString(FileName_D, MyFont10, Brushes.Black, acXPos + 100, _
acYPos + 30)
If fso.Exists(ImportFile & FileName_D) Then
gr.DrawImage(ok, acXPos + 90, acYPos + 30)
Else
gr.DrawImage(no, acXPos + 90, acYPos + 30)
End If
'--Dateinamen _S.dwg einfügen--
'...
'--Dateinamen _F.dwg einfügen--
'...
'--Dateinamen _P.dwg einfügen--
'...
Loop
e.HasMorePages = ParentFileIndex < ParentFileNames.Count - 1
End Sub Vorschau erstellen und drucken:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button1.Click
Try
ListenDruck()
With PrintPreviewDialog1
.Document = prntdoc
If .ShowDialog() = System.Windows.Forms.DialogResult.OK Then
ParentFileIndex = -1
prntdoc.Print()
End If
End With
Catch ex As System.Exception
MsgBox("Problem:" & vbCrLf & ex.Message)
End Try
End Sub Ergebnis nun ist, die Vorschau wird erstellt, jedoch jedes auf eine Seite und nicht die ersten 3 aus der liste auf Seite 1, nächsten 3 auf Seite 2, etc..
Sag ich dann drucken ok, wird nur eine leere Seite gedruckt.
Ich weiß, dass ich mich damit echt schwer hingebe und benötige eben drum Deine bzw. eure Hilfe.
Vielen Dank noch mal.
mfg.
Dirk |