عندي مشكلة في تحيد هوامش الصفحة بحيث أذا وصل الهامش السفلي من الصفحة الى 600 فرضنا فيجب فتح صفحة جديدة ومتابعة عملية الطباعة .
حولت أن أجد حل ولكن لم أجد وأعرف بأن الدلة التي تضيف صفحة جديدة هي e.HasMorePages = True
وهذا هو مثال
وجزاكم الله خير
عندي مشكلة في تحيد هوامش الصفحة بحيث أذا وصل الهامش السفلي من الصفحة الى 600 فرضنا فيجب فتح صفحة جديدة ومتابعة عملية الطباعة .
حولت أن أجد حل ولكن لم أجد وأعرف بأن الدلة التي تضيف صفحة جديدة هي e.HasMorePages = True
وهذا هو مثال
وجزاكم الله خير
تم تعديل هذه المشاركة بواسطة mam555 في 29 فبراير 2008 في 20:08
انظرالكود المرفق في موضوعي سؤال: حول طباعة النصوص
عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه
نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا
ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا
محمد سامر أبو سلو
شكرا أخي محمد سامر أبو سلو على هذا الرد
المشكلة في هذا الكود
Private Sub Print(ByVal sender As Object, ByVal e As PrintPageEventArgs)
'دالة الطباعة
Try
'تحديد اتجاه النص
Dim strFormat As New StringFormat(StringFormatFlags.DirectionRightToLeft)
'أختيار الخط وحجمة
Dim font As New Font("Arial", 13, FontStyle.Regular)
' متغيير يسند الية القيمه التي سوف تطبع
Dim F As String
'متغيير يسند الية عدد الا سطر
Dim ee As Integer = ListBox1.Items.Count
' دالة يتم فيها تحديد هوامش الصفحة
Dim ID1 As New RectangleF(180, 20, 300, 20)
'اسناد القيمة النصية للمتغير
F = TextBox1.Text.ToString.Trim
'تنفيذ عملية الطباععة المتغير المسند الية القيمة النصية
e.Graphics.DrawString(F, font, Brushes.Black, ID1, strFormat)
'متغيير يقوم بدور تكرار عملية الطباعة على اساس عدد الاسطر
Dim CURR As Integer = 0
'تحديد الهامش الاعلى لبداية الطباعة
Dim CURRX As Integer = 200
While CURR < ee
If CURR < ee Then
Dim x As New RectangleF(180, CURRX, 300, 20)
F = ListBox1.Items(CURR).ToString.Trim
e.Graphics.DrawString(F, font, Brushes.Black, x, strFormat)
'نقوم بزيادة الهامش الاعلى لنزال النص في التوالي
CURRX = CURRX + 20
End If
'الخروج من عملية التكرار أذا تحقق الشرط
If CURR = ee Then Exit While
'زيادة العداد بواحد ليقوم بطباعة السطر التالي
CURR += 1
End While
'زيادة العداد بواحد ليقوم بطباعة السطر التالي
CURRX = CURRX + 30
Dim IDX1 As New RectangleF(180, CURRX, 300, 20)
F = TextBox2.Text.ToString.Trim
e.Graphics.DrawString(F, font, Brushes.Black, IDX1, strFormat)
'السوال
' كيف أحدد خروج أمر الطباعة الى الصفحة التالية أذا وصل قيمة
' CURRX = 800
If CURR < ee Then
e.HasMorePages = True
Else
e.HasMorePages = False
End If
Catch ex As Exception
End Try
End Subبحيث أذا كان لدي 100 سطر في ListBox1
وجزاك الله كل خير .