نمایش نتایج 1 تا 3 از 3

نام تاپیک: پرینت از یک گرید (چند صفحه)

  1. #1

    پرینت از یک گرید (چند صفحه)

    راستش من در یکی از پروژه ها نیاز به گزارشی دارم که باید یک گرید رو چاپ کنه (البته نه در مد گرافیکی)
    و این گزارش باید صفحه بندی شده باشه . از دوستانی که در این مورد سورسی در اختیار دارند خواهش میکنم اونو برام بفرستند.

  2. #2
    کاربر دائمی
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    مشهد مقدس
    پست
    416
    نوبتی هم باشد نوبت من است! :wink:
    شاید این کد بدردت بخورد

  3. #3
    کاربر جدید آواتار moiid63
    تاریخ عضویت
    فروردین 1386
    محل زندگی
    همدان
    پست
    7
    '----------------------------- کنترل های مورد استفاده
    '-------------PageSetupDialog
    '-------------PrintDocument
    '-------------PrintPreviewDialog
    '--------------------------------------------------------------
    Private Sub MnItmPRINT_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MnItmPRINT.Click
    If -DataSet-Name- .Rows.Count > 0 Then
    CountLine = 0
    NumberColumnsForPrint = -DataSet-Name- .Columns.Count
    Titr = " جدول ..."
    '-در این صفحه متغییر های سراسری را کاربر تنظیم می کند
    '-مانند تعداد ستونها یا نوع خط جدول و ...
    Dim OBJ As New PrintSettingPAGE()
    OBJ.ShowDialog()
    PageSetupDialog1.ShowDialog()
    PrintPreviewDialog1.ShowDialog()
    Else
    MsgBox("اطلاعاتی برای پرینت وجود ندارد", MsgBoxStyle.OKOnly, "")
    End If
    End Sub
    '------------------------------------------------------------------
    '----------------------------- توابع مورد نیاز پرینت ---------------
    '-------------------------------------------------------------------
    Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
    '----------------------------- متغیر های سراسری استفاده شده-------------
    '-------------dim VerticalPAGE as Boolean افقی یا عمودی بودن صفحه
    '-------------dim NumberColumnsForPrint as integer
    '--------DirectionVertical تعداد ستونهای دیتاست که میخواهیم چاپ کنیم
    '-------------dim LinesPerPage as Integer تعداد خطهای هر صفحه
    '-------------dim Titr as String تیتر هر صفحه
    '--------------------------------------------------------------
    Dim xCell As Integer
    Dim yCell As Integer
    Dim WidthCell As Integer
    Dim xTITR As Integer
    Dim yTITR As Integer
    Dim HeightTITR As Integer
    Dim WidthTITR As Integer
    '--------------------------------------------------------------
    '------------مقدار دهی اندازه ها و موقعیت سلول های جدول
    '--------------------------------------------------------------
    yTITR = CInt(PageSetupDialog1.PageSettings.Margins.Top)
    xTITR = CInt(PageSetupDialog1.PageSettings.Margins.Left)
    If PageSetupDialog1.PageSettings.Landscape = True Then
    WidthTITR = CInt(PageSetupDialog1.PageSettings.PaperSize.Heigh t) - (xTITR + CInt(PageSetupDialog1.PageSettings.Margins.Right))
    Else
    WidthTITR = CInt(PageSetupDialog1.PageSettings.PaperSize.Width ) - (xTITR + CInt(PageSetupDialog1.PageSettings.Margins.Right))
    End If
    HeightTITR = 35
    xCell = PageSetupDialog1.PageSettings.Margins.Left
    yCell = yTITR + HeightTITR
    WidthCell = CInt(WidthTITR \ NumberColumnsForPrint)
    '--------------------------------------------------------------
    '------------محاسبه تعداد خطهای هر صفحه
    Dim LinesPerPage As Integer
    If PageSetupDialog1.PageSettings.Landscape = True Then
    LinesPerPage = CInt((CInt(PageSetupDialog1.PageSettings.PaperSize .Width) - (yTITR + HeightTITR + HeightHeaderCell + CInt(PageSetupDialog1.PageSettings.Margins.Bottom) )) \ HeightCell)
    Else
    LinesPerPage = CInt((CInt(PageSetupDialog1.PageSettings.PaperSize .Height) - (yTITR + HeightTITR + HeightHeaderCell + CInt(PageSetupDialog1.PageSettings.Margins.Bottom) )) \ HeightCell)
    End If
    '----------------------------------------------------------------------
    Dim RectF As RectangleF
    If -DataSet-Name- .Rows.Count <> 0 Then
    '----------------------------------------------------------
    '------------ نوشتن متن تیتر
    '----------------------------------------------------------
    Dim StrForm As StringFormat
    StrForm = New StringFormat(StringFormatFlags.DirectionRightToLef t)
    StrForm.Alignment = StringAlignment.Center
    StrForm.LineAlignment = StringAlignment.Center
    RectF.X = xTITR ' xTITR = 15 or 790
    RectF.Y = yTITR ' yTITR = 15 or 15
    RectF.Height = HeightTITR ' HeightTITR = 25 or 25
    RectF.Width = WidthTITR ' WidthTITR = 750 or 1140
    e.Graphics.DrawString(Titr, TitrFont, Brushes.Black, RectF, StrForm)
    '----------------------------------------------------------
    '------------ نوشتن سطرها
    '----------------------------------------------------------
    RectF.X = xCell
    RectF.Y = yCell + HeightHeaderCell
    RectF.Width = WidthCell
    RectF.Height = HeightCell
    StrForm.Alignment = StringAlignment.Far
    StrForm.LineAlignment = StringAlignment.Far
    Dim PrintFont As New Font("Arial", 10)
    PrintFont = DataGrid1.Font
    Dim StrField As String '' برای دریافت فیلدهای جدول
    Dim counter As Integer '' شمارهنده
    For I2 = 0 To LinesPerPage - 1
    RectF.X = xCell
    For I = (NumberColumnsForPrint - 1) To 0 Step -1
    StrField = " " & CStr( -DataSet-Name- .Rows(CountLine).Item(I))
    e.Graphics.DrawRectangle(PenRow, RectF.X, RectF.Y, RectF.Width, RectF.Height)
    e.Graphics.DrawString(StrField, PrintFont, Brushes.Black, RectF, StrForm)
    RectF.X += WidthCell
    StrField = ""
    Next
    RectF.Y += HeightCell
    CountLine += 1
    If -DataSet-Name- .Rows.Count = CountLine Then
    Exit For
    End If
    Next
    '----------------------------------------------------------
    '------------ کشیدن نام ستونها
    '----------------------------------------------------------
    StrForm.Alignment = StringAlignment.Center
    StrForm.LineAlignment = StringAlignment.Center
    RectF.X = xCell
    RectF.Y = yCell
    RectF.Width = WidthCell
    RectF.Height = HeightHeaderCell
    PrintFont = DataGrid1.HeaderFont
    For I = (NumberColumnsForPrint - 1) To 0 Step -1
    StrField = CStr( -DataSet-Name- .Columns(I).ColumnName)
    e.Graphics.DrawRectangle(PenColumn, RectF.X, RectF.Y, RectF.Width, RectF.Height)
    e.Graphics.DrawString(StrField, PrintFont, Brushes.Black, RectF, StrForm)
    RectF.X += WidthCell
    StrField = ""
    Next
    End If
    '--------------------------------------------------------------
    '------------اگر تعداد خطها زیاد شد باید صفحه دیگر ایجاد شود
    '------------در غیر این صورت صفحه جدید نباید تولید شود
    '--------------------------------------------------------------
    If CountLine < -DataSet-Name- .Rows.Count Then
    e.HasMorePages = True
    Else
    CountLine = 0
    e.HasMorePages = False
    End If
    End Sub

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •