PDA

View Full Version : کمک در چاپ



amin_gh68
شنبه 15 مهر 1391, 23:19 عصر
اقایون سلام
میخوام رسید ثبت نام چاپ کنم چه جوری رسیدو چاپ کنم چه جوری رسیدو با طرح بسازم؟
کمک کنید اطفا

arash020
یک شنبه 16 مهر 1391, 00:55 صبح
سلام
سوالتونو دقیق تر بگید
می خواید رسید رو و اطلاعاتی که قراره چاپ بشه توی فرم(مثلا lable و textbox) باشه یا نه...؟
با روش های زیر میتونی کل فرم رو با همه اجزا برای چاپ بفرستی.

1:
' If you don't want the print button to print the print button

Button1.Visible = False
' Set the PrintAction to display a Print Preview dialog
PrintForm1.Form.Left = 0
PrintForm1.PrintAction = Printing.PrintAction.PrintToPreview
' This prints a copy of the form as it appears in the PrintPreview

PrintForm1.Print()
' Display the print button again on the form

Button1.Visible = True
__________________________________________

2:

Public Class Form1
Private Print_Image As Image
Declare Auto Function BitBlt Lib "GDI32.DLL" ( _
ByVal hdcDest As IntPtr, _
ByVal nXDest As Integer, _
ByVal nYDest As Integer, _
ByVal nWidth As Integer, _
ByVal nHeight As Integer, _
ByVal hdcSrc As IntPtr, _
ByVal nXSrc As Integer, _
ByVal nYSrc As Integer, _
ByVal dwRop As Int32) As Boolean

Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(Me.Print_Image, 0, 0)
End Sub

Private Sub btnPrint_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
Application.DoEvents()
Me.Refresh()
Application.DoEvents()
Dim FormG As Graphics = Me.CreateGraphics
Dim i As New Bitmap(Me.Width, Me.Height, FormG)
Dim memG As Graphics = Graphics.FromImage(i)
Dim HDC1 As IntPtr = FormG.GetHdc
Dim HDC2 As IntPtr = memG.GetHdc
BitBlt(HDC2, 5, 5, Me.ClientRectangle.Width, Me.ClientRectangle.Height, HDC1, 0, 0, 13369376)
Me.Print_Image = i.Clone()
FormG.ReleaseHdc(HDC1)
memG.ReleaseHdc(HDC2)
FormG.Dispose()
memG.Dispose()
i.Dispose()
PrintDialog1 = New PrintDialog()
PrintDialog1.Document = PrintDocument1
Dim r As DialogResult = PrintDialog1.ShowDialog
If r = DialogResult.OK Then
PrintDocument1.Print()
End If
End Sub
End Class

amin_gh68
یک شنبه 16 مهر 1391, 10:03 صبح
ممنون از کمکتون
ببینید سیستم ثبت نامه خب موقع ثبت نام اطلاعات شخصی رو که میگیره باید یه رسید بده
اولا یه سری textbox هستش که طرف پر میکنه اونا باید چاپ بشه
بعدشم خب میخوام یه سری متنم اتوماتیک توش باشه
مثلا طرف تو textbox اسمشو میزنه
تو چاپ بنویسه جناب فلانی....
متوجه نشدید بیشتر بگم

amin_gh68
یک شنبه 16 مهر 1391, 11:28 صبح
راستی میشه من یه فرم درست کنم مثل یه عکس فقط مشخصاتی که از کاربر میگیره سر جاهاش بذاره بعد چاپ کنه؟
اینطوری بهتره

morrning
دوشنبه 17 مهر 1391, 09:58 صبح
دوست عزیز اولا کمی صبر داشتن کمی تا قسمتی خوبه!!
دوما کاری که می خوای انجام بدی روش خوبی نیست و استفاده از برنامه های گزارشگیری رو بهت پیشنهاد میدم مثل کریستال ریپورت . به نظرم یه بار برو گزارشگیری رو یاد بگیر خیال خودتو راحت کن چون هر پروژه ای بنویسی حد اقل یه باری به گزارشگیری نیاز پیدا میکنی.برای شروع هم کتاب آموزش گزارش گیری با استفاده از کریستال ریپورت نوشته جعفر نژاد قمی رو بهت پیشنهاد میکنم توی این انجمن هم مثال زیاد داره کافیه سرچ کنی کریستال ریپورت!!

amin_gh68
دوشنبه 17 مهر 1391, 14:25 عصر
این جعفرنژاد قمی پدر مارو در اورد واسه ارشد نرم افزار 3 تا کتایشو دارم میخونم.دستت درد نکنه

arash020
سه شنبه 18 مهر 1391, 01:25 صبح
سلام
ببخشید بابت دیر اومدنم...

آره من همین روشی که خودتون گفتین رو پیشنهاد میکنم .
خودم توی یکی از پروژه هام که یه رسید چاپ میکردم
از روش 2 دقیقا استفاده کرده بودم .
اطلاعاتی که می خواستم چاپ بشه(بعضی از بانک و بعضی دستی مثل ساعت و تاریخ و توضیحات خاص...)
رو توی یه فرم مجزا قشنگ به همون شکلی که میخواستم چاپ بشه
توی فرم میچیدم و بقیه ماجرا
روش دوم میاد فرم رو به یه عکس تبدیل میکنه و با اون کنترل پرینت داکیومنت میفرسته برای چاپ
شخصا توی برنامه خودم لازم ندونستم برای یه رسید ساده
کریسال ریپورت رو مچل کنم...
البته ازش به جای خودش استفاده کردم .
(در جواب دوستمون...!)

موفق باشی