لدى فورم جهزتها بجميع أدواتها
وأريد الكود اللازم لطباعتها على الورق
أريد طباعتها بأكملها على الورقة الموجودة فى الprinter مهما كانت أبعاد الفورم ومهما كانت أبعاد الورقة
ولكم ألف شكر
لدى فورم جهزتها بجميع أدواتها
وأريد الكود اللازم لطباعتها على الورق
أريد طباعتها بأكملها على الورقة الموجودة فى الprinter مهما كانت أبعاد الفورم ومهما كانت أبعاد الورقة
ولكم ألف شكر
ان كان المطلوب صعبآ فأرجو ممن حملو المرفق أى كود لطباعتها على الورقة
ومش ضرورى الشرط (مهما كانت أبعاد الفورم ومهما كانت أبعاد الورقة)
السلام عليكم...
1. أضف إلى الـ Form مكون PictureBox و اضبط اسمه (الخاصية Name) على pbxImageHolder. لا يهم حجمه و لا مكانه لأنه لن يظهر أثناء التشغيل و لا أثناء الطباعة، و إنما سنستعمله كمخزن مؤقت للصورة.
2. ضع التصريحات التالية في قسم التصريحات العام:
Private Const SRCCOPY = &HCC0020 Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
3. في الحدث Form_Load اكتب الكود التالي:
With pbxImageHolder
.ScaleMode = vbPixels
.BorderStyle = 0
.Width = Me.ScaleX(Me.Width, vbTwips, Me.ScaleMode)
.Height = Me.ScaleY(Me.Height, vbTwips, Me.ScaleMode)
.AutoRedraw = True
.Visible = False
End With
4. في زر الطباعة (أو أمر القائمة الخاص بالطباعة) اكتب الكود التالي:
Dim OldMode As ScaleModeConstants
Dim WidthPixels As Long
Dim HeightPixels As Long
Dim NCx As Long
Dim NCy As Long
WidthPixels = Me.Width / Screen.TwipsPerPixelX
HeightPixels = Me.Height / Screen.TwipsPerPixelY
NCx = (WidthPixels - Me.ScaleX(Me.ScaleWidth, Me.ScaleMode, vbPixels)) \ 2
NCy = HeightPixels - Me.ScaleY(Me.ScaleHeight, Me.ScaleMode, vbPixels) - NCx
pbxImageHolder.Cls
BitBlt pbxImageHolder.hdc, 0, 0, WidthPixels, HeightPixels, Me.hdc, -NCx, -NCy, SRCCOPY
OldMode = Printer.ScaleMode
Printer.ScaleMode = vbPixels
Printer.Print "";
Printer.PaintPicture pbxImageHolder.Image, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, 0, 0, WidthPixels, HeightPixels
Printer.EndDoc
Printer.ScaleMode = OldMode
5. نرجو الاستفادة و السلام.
*** ملاحظات:
أ. الكود السابق يطبع كامل الـ Form بما في ذلك إطارها و شريط عنوانها. إذا كنت تريد طباعة محتوياتها فقط - دون إطار - فإن الكود يحتاج إلى بعض التعديل. أخبرنا لنعدل الكود.
ب. صورة الـ Form تتم طباعتها على كامل الصفحة.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
نعم أريد طباعة محتوياتها فقط - دون إطار ودون بعض الأزرار
Private Sub Command1_Click() cmdAdd.Visible = False: cmdAdd.Enabled = False cmdDelete.Visible = False: cmdDelete.Enabled = False CMDUpdate.Visible = False: CMDUpdate.Enabled = False cmdCancle.Visible = False: cmdCancle.Visible = False Adodc1.Visible = False: Adodc1.Enabled = False Command1.Visible = False -Rem"هنايجب وضع الكوداللازم لطباعةالفورم عندالضغط على زرالطباعة" Command1.Visible = True End Sub
أرجو منك تعديل الكود
وليتك ترسل الفورم كاملة فى ملفى المرفق
ولك ألف ألف شكر
السلام عليكم...
* احذف الكود المذكور سابقاً في الحدث Form_Load حيث نقلناه إلى هنا.
Private Sub Command1_Click()
Dim OldMode As ScaleModeConstants
Dim WidthPixels As Long
Dim HeightPixels As Long
' هنا قم بإخفاء المكونات التي لا تريد إظهارها عند الطباعة
With pbxImageHolder
.ScaleMode = vbPixels
.BorderStyle = 0
.Width = Me.ScaleWidth
.Height = Me.ScaleHeight
.AutoRedraw = True
.Visible = False
End With
Me.Refresh
WidthPixels = Me.ScaleX(Me.ScaleWidth, Me.ScaleMode, vbPixels)
HeightPixels = Me.ScaleY(Me.ScaleHeight, Me.ScaleMode, vbPixels)
pbxImageHolder.Cls
BitBlt pbxImageHolder.hDC, 0, 0, WidthPixels, HeightPixels, Me.hDC, 0, 0, SRCCOPY
OldMode = Printer.ScaleMode
Printer.ScaleMode = vbPixels
Printer.Print "";
Printer.PaintPicture pbxImageHolder.Image, 0, 0, Printer.ScaleWidth, Printer.ScaleHeight, 0, 0, WidthPixels, HeightPixels
Printer.EndDoc
Printer.ScaleMode = OldMode
End Subنرجو الاستفادة و السلام.
وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ
صدق الله العظيم
جزاك الله خيرآ
ولك ألف ألف شكر
هذا الموضوع مغلق.
المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية
جارٍ التحقق من المتواجدين…