الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

طباعة الفورم بأكملها على الورقة مهما كانت أبعادها

مغلقمُجاب
بدأه اسلام الكبابى في 21 مايو 2013 · 5 رد · 2,750 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدى فورم جهزتها بجميع أدواتها
وأريد الكود اللازم لطباعتها على الورق

 

أريد طباعتها بأكملها على الورقة الموجودة فى الprinter مهما كانت أبعاد الفورم ومهما كانت أبعاد الورقة

 

ولكم ألف شكر

طباعة الفورم.zip

#2

ان كان المطلوب صعبآ فأرجو ممن حملو المرفق أى كود لطباعتها على الورقة

ومش ضرورى الشرط (مهما كانت أبعاد الفورم ومهما كانت أبعاد الورقة)

#3

السلام عليكم...

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 تتم طباعتها على كامل الصفحة.
 

1

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#4


نعم أريد طباعة محتوياتها فقط - دون إطار ودون بعض الأزرار

 

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

 

أرجو منك تعديل الكود
وليتك ترسل الفورم كاملة فى ملفى المرفق

ولك ألف ألف شكر

#5 أفضل إجابة

السلام عليكم...

 

* احذف الكود المذكور سابقاً في الحدث 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

نرجو الاستفادة و السلام.

1

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#6

جزاك الله خيرآ

ولك ألف ألف شكر

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…