Biete kleinen MiniJob - VB.NET Drucken

  • Biete

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von Cheffboss.

    Biete kleinen MiniJob - VB.NET Drucken

    Moin! :)
    Es wird ein Experte gesucht, dieser sich auskennt, im Bereich Drucken in VB.NET.
    Ich habe ein Datagridview mit Inhalt, also Spalten und Zeilen.
    Jetzt möchte ich, diese gerne auflisten und Speichern/Drucken können.
    Leider habe ich bis heute keine Lösung gefunden.
    Ein Code habe ich aus dem Internet gefunden.
    Aber diesen anzupassen ist mir leider noch zu schwer.
    Wer möchte mir helfen und diesen Programmierauftrag bekommen?
    Ich bin bereit 15,00 Euro zu zahlen, per PayPal. :thumbup:

    Genauere Infos:
    Ich möchte dass man einstellen kann, ob die Seite Querformat oder Hochformat ist.
    Außerdem sollte mindestens 15 Spalten herausgelesen werden.
    Und die Überschrift und der Inhalt dürfen nicht abgeschnitten sein.
    Also ganz ausgeschrieben werden…
    Es sollte auch die Seitenzahl und das Datum, noch unten rechts stehen.
    Es sollte auch mehre Seiten ausgeben können.
    Ich hoffe dass es jemand gibt, der das für mich lösen kann.
    Freue mich auf Hilfe!
    BIG THX



    VB.NET-Quellcode

    1. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Me.PrintDocument1.DefaultPageSettings.Landscape = True
    3. Me.PrintPreviewDialog1.ShowDialog()
    4. End Sub
    5. Dim mRow As Integer = 0
    6. Dim newpage As Boolean = True
    7. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    8. ' sets it to show '...' for long text
    9. Dim fmt As StringFormat = New StringFormat(StringFormatFlags.LineLimit)
    10. fmt.LineAlignment = StringAlignment.Center
    11. fmt.Trimming = StringTrimming.EllipsisCharacter
    12. Dim y As Int32 = e.MarginBounds.Top
    13. Dim rc As Rectangle
    14. Dim x As Int32
    15. Dim h As Int32 = 0
    16. Dim row As DataGridViewRow
    17. ' print the header text for a new page
    18. ' use a grey bg just like the control
    19. If newpage Then
    20. row = dgv.Rows(mRow)
    21. x = e.MarginBounds.Left
    22. For Each cell As DataGridViewCell In row.Cells
    23. ' since we are printing the control's view,
    24. ' skip invidible columns
    25. If cell.Visible Then
    26. rc = New Rectangle(x, y, cell.Size.Width, cell.Size.Height)
    27. e.Graphics.FillRectangle(Brushes.Gold, rc)
    28. e.Graphics.DrawRectangle(Pens.Black, rc)
    29. ' reused in the data pront - should be a function
    30. Select Case dgv.Columns(cell.ColumnIndex).DefaultCellStyle.Alignment
    31. Case DataGridViewContentAlignment.BottomRight,
    32. DataGridViewContentAlignment.MiddleRight
    33. fmt.Alignment = StringAlignment.Far
    34. rc.Offset(-1, 0)
    35. Case DataGridViewContentAlignment.BottomCenter,
    36. DataGridViewContentAlignment.MiddleCenter
    37. fmt.Alignment = StringAlignment.Center
    38. Case Else
    39. fmt.Alignment = StringAlignment.Near
    40. rc.Offset(2, 0)
    41. End Select
    42. e.Graphics.DrawString(dgv.Columns(cell.ColumnIndex).HeaderText,
    43. dgv.Font, Brushes.Black, rc, fmt)
    44. x += rc.Width
    45. h = Math.Max(h, rc.Height)
    46. End If
    47. Next
    48. y += h
    49. End If
    50. newpage = False
    51. ' now print the data for each row
    52. Dim thisNDX As Int32
    53. For thisNDX = mRow To dgv.RowCount - 1
    54. ' no need to try to print the new row
    55. If dgv.Rows(thisNDX).IsNewRow Then Exit For
    56. row = dgv.Rows(thisNDX)
    57. x = e.MarginBounds.Left
    58. h = 0
    59. ' reset X for data
    60. x = e.MarginBounds.Left
    61. ' print the data
    62. For Each cell As DataGridViewCell In row.Cells
    63. If cell.Visible Then
    64. rc = New Rectangle(x, y, cell.Size.Width, cell.Size.Height)
    65. e.Graphics.DrawRectangle(Pens.Black, rc)
    66. Select Case dgv.Columns(cell.ColumnIndex).DefaultCellStyle.Alignment
    67. Case DataGridViewContentAlignment.BottomRight,
    68. DataGridViewContentAlignment.MiddleRight
    69. fmt.Alignment = StringAlignment.Far
    70. rc.Offset(-1, 0)
    71. Case DataGridViewContentAlignment.BottomCenter,
    72. DataGridViewContentAlignment.MiddleCenter
    73. fmt.Alignment = StringAlignment.Center
    74. Case Else
    75. fmt.Alignment = StringAlignment.Near
    76. rc.Offset(2, 0)
    77. End Select
    78. e.Graphics.DrawString(cell.FormattedValue.ToString(),
    79. dgv.Font, Brushes.Black, rc, fmt)
    80. x += rc.Width
    81. h = Math.Max(h, rc.Height)
    82. End If
    83. Next
    84. y += h
    85. ' next row to print
    86. mRow = thisNDX + 1
    87. If y + h > e.MarginBounds.Bottom Then
    88. e.HasMorePages = True
    89. ' mRow -= 1 causes last row to rePrint on next page
    90. newpage = True
    91. Return
    92. End If
    93. Next
    94. End Sub



    EDIT2:
    Thema erledigt! :)
    Visual Basic.NET 8o
    MS-SQL
    8o

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Cheffboss“ ()

    Huhu
    Zunächst möchte ich natürlich kein Geld haben, FALLS ich dir in irgendeiner Weise helfen kann.
    Da ich mich aber seid ein paar Tagen mit dem gleichen Thema beschäftige, gebe ich dir einfach mal was ich habe, vielleicht hilft es ja.

    Ich glaube zunächst solltest du dir Gedanken machen, wo die Daten deines DGV herkommen.
    Es könnte sinnvoller sein diese zum drucken aus der Quelle zu holen (also dem DataSet z.B.) und nicht aus dem DGV.

    1. habe ich eine Klasse, welche das drucken übernimmt.
    Aufruf:

    VB.NET-Quellcode

    1. Private Sub BTNPrint_Click(sender As Object, e As EventArgs) Handles BTNPrint.Click
    2. Dim PrintDGV As New clsDGVPrint(Me.DGVEvaluation)
    3. PrintDGV.Print()
    4. End Sub

    Die Klasse:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class clsDGVPrint
    2. Private m_Pages As Integer
    3. Private m_intTotalWidth As Integer
    4. Private m_intPageHeight As Integer
    5. Private m_intRowsToPrint As Integer
    6. Private m_arColsWidth() As Integer
    7. Private m_arHeaderText() As String
    8. Private m_ftHeaderFont As Font
    9. Private m_DataGridView As DataGridView
    10. Private WithEvents m_PrintDoc As Printing.PrintDocument
    11. Public Sub New()
    12. Me.m_Pages = 0
    13. Me.m_intTotalWidth = 0
    14. Me.m_intPageHeight = 0
    15. Me.m_intRowsToPrint = 0
    16. Me.m_ftHeaderFont = New Font("Arial", 12)
    17. End Sub
    18. Public Sub New(ByVal dgv As DataGridView)
    19. Me.New()
    20. Me.m_DataGridView = dgv
    21. ReDim Me.m_arColsWidth(Me.m_DataGridView.ColumnCount - 1)
    22. ReDim Me.m_arHeaderText(Me.m_DataGridView.ColumnCount - 1)
    23. End Sub
    24. Public Sub Print()
    25. Me.m_PrintDoc = New Printing.PrintDocument
    26. AddHandler m_PrintDoc.EndPrint, AddressOf Me.EndPrint
    27. Dim intCols As Integer = Me.m_DataGridView.ColumnCount - 1
    28. For i As Integer = 0 To intCols
    29. Me.m_arColsWidth(i) = GetColumnsSize(i)
    30. Me.m_arHeaderText(i) = GetHeaderText(i)
    31. Me.m_intTotalWidth = Me.m_intTotalWidth + Me.m_arColsWidth(i)
    32. Next
    33. If Me.m_intTotalWidth > Me.m_PrintDoc.DefaultPageSettings.PaperSize.Width Then
    34. Me.m_PrintDoc.DefaultPageSettings.Landscape = True
    35. Me.m_PrintDoc.DefaultPageSettings.Margins.Top = 35
    36. Me.m_intPageHeight = Me.m_PrintDoc.DefaultPageSettings.PaperSize.Width
    37. Else
    38. Me.m_intPageHeight = Me.m_PrintDoc.DefaultPageSettings.PaperSize.Height
    39. End If
    40. Dim ppd As PrintPreviewDialog = New PrintPreviewDialog()
    41. ppd.Document = Me.m_PrintDoc
    42. ppd.ShowDialog()
    43. End Sub
    44. Private Sub m_PrintDoc_PrintPage(ByVal sender As Object,
    45. ByVal e As Printing.PrintPageEventArgs) Handles m_PrintDoc.PrintPage
    46. Me.PrintHeader(e.Graphics)
    47. Me.PrintRows(e)
    48. 'Seitenzahl drucken
    49. Dim str As String = "Seite " & Me.m_Pages.ToString
    50. e.Graphics.DrawString(str,
    51. Me.m_DataGridView.Font, Brushes.Blue,
    52. Me.m_PrintDoc.DefaultPageSettings.Margins.Left, Me.m_intPageHeight - 75)
    53. End Sub
    54. Private Sub PrintHeader(ByVal g As Graphics)
    55. Dim x As Integer = Me.m_PrintDoc.DefaultPageSettings.Margins.Left
    56. Dim y As Integer = Me.m_PrintDoc.DefaultPageSettings.Margins.Top
    57. For i As Integer = 0 To Me.m_arHeaderText.Length - 1
    58. g.DrawString(Me.m_arHeaderText(i), Me.m_ftHeaderFont, Brushes.Black, x, y)
    59. x += Me.m_arColsWidth(i)
    60. Next
    61. End Sub
    62. Private Sub PrintRows(ByVal e As Printing.PrintPageEventArgs)
    63. Dim intCols As Integer = Me.m_DataGridView.ColumnCount - 1
    64. Dim intRows As Integer = Me.m_DataGridView.RowCount - 2
    65. Dim x As Integer = Me.m_PrintDoc.DefaultPageSettings.Margins.Left
    66. Dim y As Integer = Me.m_PrintDoc.DefaultPageSettings.Margins.Top + 50
    67. Me.m_Pages += 1
    68. For i As Integer = Me.m_intRowsToPrint To intRows
    69. For ii As Integer = 0 To intCols
    70. If Not Me.m_DataGridView.Rows(i).Cells(ii).Value Is Nothing Then
    71. Dim str As String = Me.m_DataGridView.Rows(i).Cells(ii).Value.ToString
    72. e.Graphics.DrawString(str, Me.m_DataGridView.Font, Brushes.Black, x, y)
    73. End If
    74. x += Me.m_arColsWidth(ii)
    75. Next
    76. x = Me.m_PrintDoc.DefaultPageSettings.Margins.Left
    77. y += 30
    78. If y > (Me.m_intPageHeight -
    79. Me.m_PrintDoc.DefaultPageSettings.Margins.Bottom) Then
    80. e.HasMorePages = True
    81. Me.m_intRowsToPrint = i + 1
    82. Exit Sub
    83. Else
    84. e.HasMorePages = False
    85. Me.m_intRowsToPrint = 0
    86. End If
    87. Next
    88. End Sub
    89. Private Function GetHeaderText(ByVal col As Integer) As String
    90. Return Me.m_DataGridView.Columns(col).HeaderText
    91. End Function
    92. Private Function GetColumnsSize(ByVal col As Integer) As Integer
    93. Dim sglWidth As Single = 0
    94. Dim intRows As Integer = Me.m_DataGridView.RowCount - 2
    95. Using g As Graphics = Graphics.FromHwnd(Me.m_DataGridView.Handle)
    96. Dim newSizeF As SizeF = g.MeasureString(GetHeaderText(col), Me.m_ftHeaderFont)
    97. sglWidth = newSizeF.Width + 15
    98. For i As Integer = 0 To intRows
    99. If Not Me.m_DataGridView.Rows(i).Cells(col).Value Is Nothing Then
    100. newSizeF = g.MeasureString(
    101. Me.m_DataGridView.Rows(i).Cells(col).Value.ToString,
    102. Me.m_DataGridView.Font)
    103. End If
    104. If newSizeF.Width > sglWidth Then sglWidth = newSizeF.Width + 15
    105. Next
    106. End Using
    107. Return CInt(sglWidth)
    108. End Function
    109. Private Sub EndPrint(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintEventArgs)
    110. Me.m_Pages = 0
    111. End Sub
    112. End Class

    In der Klasse habe ich an zwei Stellen eine IsNull Prüfung eingebaut, weils sonst abschmiert, wenn eine DGV Zelle leer ist.
    Diesen Code habe ich von: vb-fun.de/cgi-bin/forumarchiv.…n=zeigeseite&nummer=25377
    Dazu hätte ich auch eine DemoSolution (ich wollte das ganze auch im Forum posten, mache aber gerade noch etwas anderes.)
    Hier kommt was druckbares raus, sieht aber noch ziemlich bekackt aus.

    2. bei Codeproject habe ich folgendes gefunden: codeproject.com/Articles/16670…Selecting-Columns-and-Row
    Das habe ich noch nicht ausprobiert, aber es wirkt spannend - falls diese Art der Auswahl für dich in Frage kommt.

    3. eventuell auch interessant, wäre das speichern deiner DGV (oder der Daten halt) in einer pdf.
    Da habe ich mal erfolgreich etwas mit der dll pdfFileWriter gemacht. Hier sieht die Ausgabe auch echt brauchbar aus - also genau so wie ich es wollte.
    Das ganze habe ich hier gefunden: emoreau.com/Entries/Articles/2…-PDF-from-Net-easily.aspx
    und hier auf CodeProject: codeproject.com/Articles/57068…lass-Library-Version-1-26
    ist enorm gut dokumentiert und hier könnte ich dir auch eine DemoSolution basteln.
    Ich weiß nicht ob das erstellen einer pdf für dein Problem ebenfalls in Frage kommt, aber wenn ja, solltest du dir das ansehen.
    Vielleicht ist es ja auch möglich dem PrintPreviewDialog eine pdf zu übergeben. Dann wäre das hinzufügen dieser dll vielleicht ein bisschen KanonenAufSpatzen, aber immerhin komfortabel.
    @DerSmurf
    Vielen Dank, es hat mir einwenig geholfen.
    Leider zeigt der Code, nicht alle Tabellen an.
    Da die A4-Seite zu klein ist.
    Ich werde mich weiter einarbeiten in das Thema!
    Suche aber immer noch, nach der Lösung!
    Visual Basic.NET 8o
    MS-SQL
    8o
    Ja, das Problem habe ich mit der pdf Klasse (1. Lösungsansatz) auch.
    Allerdings ist die breite eines DINA4 Blattes ja immer gleich.
    Da ließe sich ja dann die Spaltenbreite entsprechend berechnen.

    Ich schaue mir jetzt mal den zweiten Lösungsansatz an.
    Hier ist die Demosolution nicht ausführbar bei mir, weil irgendwas fehlt. Vielleicht bekomme ich das ja per Code in mei Programm.
    Wenns was neues gibt, gebe ich laut.
    @DerSmurf

    Gute Nachricht. :thumbup:
    Ich habe nun nach stundenlanger suche einen Quellcode gefunden, dieser war in C#.
    Habe diesen aber nun auf VB.NET umgeschrieben.
    Ich werde morgen, den Code gründlich ausprobieren.
    In meinem ersten Test sind alle meine 8 Spalten aufgelistet worden.
    Außerdem gibt es eine Überschrift und das passende Datum aus.
    Wenn man sich in den Code einarbeitet, kann man diesen auch schöner gestalten, also Farben auswählen.

    Nun noch eine Frage:
    Open License (CPOL) 1.02
    Darf ich diese in meinen Softwareprojekt aufnehmen?
    Oder benötige ich noch die Erlaubnis vom Entwickler?
    Da ich diesen in VB.NET Code umgewandelt habe, darf ich diesen dann verwenden, als Open License?

    Orginal Link:
    codeproject.com/Articles/28046/Printing-of-DataGridView

    Mein Code:

    VB.NET-Quellcode

    1. Option Strict On
    2. Imports System.Drawing.Printing
    3. Public Class Form1
    4. Private strFormat As StringFormat
    5. Private arrColumnLefts As ArrayList = New ArrayList()
    6. Private arrColumnWidths As ArrayList = New ArrayList()
    7. Private iCellHeight As Integer = 0
    8. Private iTotalWidth As Integer = 0
    9. Private iRow As Integer = 0
    10. Private bFirstPage As Boolean = False
    11. Private bNewPage As Boolean = False
    12. Private iHeaderHeight As Integer = 0
    13. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    14. Dim printDialog As PrintDialog = New PrintDialog()
    15. printDialog.Document = PrintDocument1
    16. printDialog.UseEXDialog = True
    17. PrintDocument1.DefaultPageSettings.Landscape = True
    18. PrintPreviewDialog1.ShowDialog()
    19. Exit Sub '<-- nur zum testen!
    20. If DialogResult.OK = printDialog.ShowDialog() Then
    21. PrintDocument1.DocumentName = "Test Page Print"
    22. PrintDocument1.Print()
    23. End If
    24. End Sub
    25. Private Sub PrintDocument1_PrintPage(sender As Object, e As Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    26. Try
    27. Dim iLeftMargin As Integer = e.MarginBounds.Left
    28. Dim iTopMargin As Integer = e.MarginBounds.Top
    29. Dim bMorePagesToPrint As Boolean = False
    30. Dim iTmpWidth As Integer = 0
    31. If bFirstPage Then
    32. For Each GridCol As DataGridViewColumn In DataGridView1.Columns
    33. iTmpWidth = CInt((Math.Floor(CDbl((CDbl(GridCol.Width) / CDbl(iTotalWidth) * CDbl(iTotalWidth) * (CDbl(e.MarginBounds.Width) / CDbl(iTotalWidth)))))))
    34. iHeaderHeight = CInt((e.Graphics.MeasureString(GridCol.HeaderText, GridCol.InheritedStyle.Font, iTmpWidth).Height)) + 11
    35. arrColumnLefts.Add(iLeftMargin)
    36. arrColumnWidths.Add(iTmpWidth)
    37. iLeftMargin += iTmpWidth
    38. Next
    39. End If
    40. While iRow <= DataGridView1.Rows.Count - 1
    41. Dim GridRow As DataGridViewRow = DataGridView1.Rows(iRow)
    42. iCellHeight = GridRow.Height + 5
    43. Dim iCount As Integer = 0
    44. If iTopMargin + iCellHeight >= e.MarginBounds.Height + e.MarginBounds.Top Then
    45. bNewPage = True
    46. bFirstPage = False
    47. bMorePagesToPrint = True
    48. Exit While
    49. Else
    50. If bNewPage Then
    51. e.Graphics.DrawString("Meine Überschrift!", New Font(DataGridView1.Font, FontStyle.Bold), Brushes.Black, e.MarginBounds.Left, e.MarginBounds.Top - e.Graphics.MeasureString("Customer Summary", New Font(DataGridView1.Font, FontStyle.Bold), e.MarginBounds.Width).Height - 13)
    52. Dim strDate As String = DateTime.Now.ToLongDateString() & " " & DateTime.Now.ToShortTimeString()
    53. e.Graphics.DrawString(strDate, New Font(DataGridView1.Font, FontStyle.Bold), Brushes.Black, e.MarginBounds.Left + (e.MarginBounds.Width - e.Graphics.MeasureString(strDate, New Font(DataGridView1.Font, FontStyle.Bold), e.MarginBounds.Width).Width), e.MarginBounds.Top - e.Graphics.MeasureString("Customer Summary", New Font(New Font(DataGridView1.Font, FontStyle.Bold), FontStyle.Bold), e.MarginBounds.Width).Height - 13)
    54. iTopMargin = e.MarginBounds.Top
    55. For Each GridCol As DataGridViewColumn In DataGridView1.Columns
    56. e.Graphics.FillRectangle(New SolidBrush(Color.LightGray), New Rectangle(CInt(arrColumnLefts(iCount)), iTopMargin, CInt(arrColumnWidths(iCount)), iHeaderHeight))
    57. e.Graphics.DrawRectangle(Pens.Black, New Rectangle(CInt(arrColumnLefts(iCount)), iTopMargin, CInt(arrColumnWidths(iCount)), iHeaderHeight))
    58. e.Graphics.DrawString(GridCol.HeaderText, GridCol.InheritedStyle.Font, New SolidBrush(GridCol.InheritedStyle.ForeColor), New RectangleF(CInt(arrColumnLefts(iCount)), iTopMargin, CInt(arrColumnWidths(iCount)), iHeaderHeight), strFormat)
    59. iCount += 1
    60. Next
    61. bNewPage = False
    62. iTopMargin += iHeaderHeight
    63. End If
    64. iCount = 0
    65. For Each Cel As DataGridViewCell In GridRow.Cells
    66. If Cel.Value IsNot Nothing Then
    67. e.Graphics.DrawString(Cel.Value.ToString(), Cel.InheritedStyle.Font, New SolidBrush(Cel.InheritedStyle.ForeColor), New RectangleF(CInt(arrColumnLefts(iCount)), CSng(iTopMargin), CInt(arrColumnWidths(iCount)), CSng(iCellHeight)), strFormat)
    68. End If
    69. e.Graphics.DrawRectangle(Pens.Black, New Rectangle(CInt(arrColumnLefts(iCount)), iTopMargin, CInt(arrColumnWidths(iCount)), iCellHeight))
    70. iCount += 1
    71. Next
    72. End If
    73. iRow += 1
    74. iTopMargin += iCellHeight
    75. End While
    76. If bMorePagesToPrint Then
    77. e.HasMorePages = True
    78. Else
    79. e.HasMorePages = False
    80. End If
    81. Catch exc As Exception
    82. MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
    83. End Try
    84. End Sub
    85. Private Sub PrintDocument1_BeginPrint(sender As Object, e As PrintEventArgs) Handles PrintDocument1.BeginPrint
    86. Try
    87. strFormat = New StringFormat()
    88. strFormat.Alignment = StringAlignment.Near
    89. strFormat.LineAlignment = StringAlignment.Center
    90. strFormat.Trimming = StringTrimming.EllipsisCharacter
    91. arrColumnLefts.Clear()
    92. arrColumnWidths.Clear()
    93. iCellHeight = 0
    94. iRow = 0
    95. bFirstPage = True
    96. bNewPage = True
    97. iTotalWidth = 0
    98. For Each dgvGridCol As DataGridViewColumn In DataGridView1.Columns
    99. iTotalWidth += dgvGridCol.Width
    100. Next
    101. Catch ex As Exception
    102. MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error])
    103. End Try
    104. End Sub
    105. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    106. ' beispiel werte
    107. DataGridView1.Rows.Add("Spalte 1", "Spalte 2", "Spalte 3", "Spalte 4", "Spalte 5")
    108. DataGridView1.Rows.Add("Hallo", "Hallo", "Hallo", "Hallo", "Hallo")
    109. End Sub
    110. End Class



    Ich hoffe der Code hilft dir auch weiter!?
    Freue mich auf Feedback! ;)
    Visual Basic.NET 8o
    MS-SQL
    8o

    Cheffboss schrieb:

    Open License (CPOL) 1.02


    ​The main points subject to the terms of the license are:[4]

    Source Code and Executable Files can be used in commercial applications;
    Source Code and Executable Files can be redistributed; and
    Source Code can be modified to create derivative works;
    No claim of suitability, guarantee, or any warranty whatsoever is provided. The software is provided "as-is";
    The Article(s) accompanying the Work may not be distributed or republished without the Author's consent;
    Executable Files and Source Code may not be distributed with any technological measures that control access or use of the Work in a manner inconsistent with the terms of the License.
    The license itself grants copyright and patent protection to the developer. The Code Project has a comparison of the CPOL to open-source licenses on their site. Further, the license provides a distinction and clarification between the source code available for download and the source code's author's articles and writings about that content.


    Des steht auf Wikipedia - sollte also alles kein Problem sein - wenn du es veränderst und die veränderte Version weiterverbreiten willst musst du es halt unter der gleichen Lizenz tun (so wie ichs verstehe)....
    Meine Website
    Mein Projekt: SnippetLibrary
    @florian03
    Danke, für die recherche.

    @DerSmurf
    Ich habe den Code heute getestet.
    Ich bin mit diesem Zufrieden.
    Man kann leicht, die Schriften so formatieren wie man will.
    Ich hoffe dir hilft dieser Code genau so wie mir.
    :thumbup:
    Visual Basic.NET 8o
    MS-SQL
    8o