PDA

View Full Version : پرینت از دیتاگرید ویو



abi_sarab
چهارشنبه 06 آذر 1387, 12:15 عصر
سلام!
خوبید؟
چطور می شه از dataGridView پرینت گرفت؟

arsalansalar
چهارشنبه 06 آذر 1387, 12:23 عصر
"جستجو" واژه زیبایست:متفکر:
مثال chobin رو هم از لینک زیر ببین(بخش چاپ دیتاگرید و گزارش)
http://barnamenevis.org/forum/showth...t=69916&page=8 (http://barnamenevis.org/forum/showthread.php?t=69916&page=8)

abi_sarab
چهارشنبه 06 آذر 1387, 13:15 عصر
آقای arsalansalar (http://barnamenevis.org/forum/member.php?u=46464)
بله جستجو زیباست ولی عنوان بندی سایت خیلی بده و جستجو خیلی مشکه می شه
در ضمن مرسی از جوابتون

arsalansalar
چهارشنبه 06 آذر 1387, 14:49 عصر
شما به جستجو هم نیاز نداشتید فقط کافی بود تو عکسی که واستون گذاشتم یکه نگاه می کردید.
به هر حال شما تازه با سایت آشنا شدید و طول میکشه با تمام زوایایی آن آشنا شوید.
موفق باشید:چشمک:

ghazal4843
چهارشنبه 06 آذر 1387, 15:19 عصر
با سلام
و با اجازه moiid63 :

'----------------------------- کنترل های مورد استفاده
'-------------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

abi_sarab
چهارشنبه 06 آذر 1387, 19:04 عصر
مرسی ghazal (http://barnamenevis.org/forum/member.php?u=17755)
ولی کار نکرد!

Esmail Solhkhah
یک شنبه 17 آذر 1387, 01:57 صبح
سلام دوست عزیز
یه سر به قسمت برنامه نویسی سایت ما بزن سورسشو گذاشتم
موفق باشی.
www.ptasystem.com (http://www.ptasystem.com)

younesnazari1
دوشنبه 12 خرداد 1393, 18:31 عصر
با سلام چطور میشه اطلاعات دیتا گرید که از راست به چپ هستش به همان صورت یعنی از چپ به راست چاپ کرد.ازچند راه استفاده کردم ولی برعکس میشه ممنون میشم اگه کمکم کنید.