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

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم أسئلة واستفسارات الأعضاء - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=94)
+--- قسم : قسم Visual Basic 6 وما قبله (http://vb4arb.com/vb/forumdisplay.php?fid=167)
+--- الموضوع : طباعة الفورم بأكملها على الورقة مهما كانت أبعادها (/showthread.php?tid=8975)



طباعة الفورم بأكملها على الورقة مهما كانت أبعادها - اسلام الكبابى - 21-05-13

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

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

[FONT=&amp]أريد طباعتها بأكملها على الورقة الموجودة فى ال[/FONT][FONT=&amp][FONT=&amp]printer[/FONT] [/FONT] [FONT=&amp] مهما كانت أبعاد الفورم [/FONT][FONT=&amp]و[/FONT][FONT=&amp]مهما كانت أبعاد الورقة[/FONT]
ولكم ألف شكر


طباعة الفورم بأكملها على الورقة مهما كانت أبعادها - اسلام الكبابى - 22-05-13

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

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


طباعة الفورم بأكملها على الورقة مهما كانت أبعادها - ناجي إبراهيم - 23-05-13

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

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


طباعة الفورم بأكملها على الورقة مهما كانت أبعادها - اسلام الكبابى - 23-05-13

إقتباس :*** ملاحظات:
أ. الكود السابق يطبع كامل الـ Form بما في ذلك إطارها و شريط عنوانها. إذا كنت تريد طباعة محتوياتها فقط - دون إطار - فإن الكود يحتاج إلى بعض التعديل. أخبرنا لنعدل الكود.

نعم أستاذنا الكبير
أريد طباعة محتوياتها فقط - دون إطار ودون
بعض الأزرار
كود :
[align=left][SIZE=3]
Private Sub Command1_Click()
  cmdAdd.Visible = False: cmdAdd.Enabled = False
  cmdDelete.Visible = False: cmdDelete.Enabled = False
  CMDUpdate.Visible = False: CMDUpdate.Visible = False
  cmdCancle.Visible = False: cmdCancle.Visible = False
  Adodc1.Visible = False: Adodc1.Enabled = False

Command1.Visible = False


-Rem"هنا يجب وضع الكود اللازم لطباعة الفورم"


Command1.Visible = True
End Sub[/SIZE]
[/align]

أرجو منك تعديل الكود[SIZE=3]
وليتك ترسل الفورم كاملة فى أى ملف مرفق[/SIZE]

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



طباعة الفورم بأكملها على الورقة مهما كانت أبعادها - ناجي إبراهيم - 23-05-13

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

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

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


طباعة الفورم بأكملها على الورقة مهما كانت أبعادها - اسلام الكبابى - 24-05-13

[b][SIZE=5]جزاك الله خيرآ
ولك ألف شكر[/SIZE][/b]


RE: طباعة الفورم بأكملها على الورقة مهما كانت أبعادها - شوشه - 09-06-20

في هذا الكود الجديد تحذف كود الي كتبته اول ب comaned او يبقى ونضيف هذا