الدرس الأربعون
الطباعة دون تقرير
ونحن نعرف أن قاعدة البيانات التي نعمل بها من ثلاث حقول وهي:
tell : رقم الهاتف
name : الإسم
adr : العنوان
والجدول DBGrid1 يتكون من
أعمدة Column وتختصر Col
صفوف Row
والأن سوف نطبع كل عمود وصف عن طريق حلقة التكرار و كائن الطباعة Printer Object
ضع الكود التالي في قسم التصريحات العامة General
Private Sub PrintFont(sFontName As String, _ nFontSize As Integer, _ bFontBold As Boolean, _ bFontItalic As Boolean, _ bFontUnderline As Boolean) Printer.FontName = sFontName Printer.FontSize = nFontSize Printer.FontBold = bFontBold Printer.FontItalic = bFontItalic Printer.FontUnderline = bFontUnderline End Sub
وهو تحديد خصائص الخط الذي سف يظهر على الطابعة.
بعد ذلك ضع الكود التالي : إتجاه الطباعة
Private Sub PrintText(fXCoordinate As Single, _ fYCoordinate As Single, _ sText As String) Dim lStart As Long Dim lIndex As Long Printer.CurrentX = fXCoordinate Printer.CurrentY = fYCoordinate lStart = 1 lIndex = InStr(lStart, sText, vbCrLf) Do While lIndex <> 0 Mid$(sText, lIndex, 2) = " " lStart = lStart + lIndex lIndex = InStr(lStart, sText, vbCrLf) Loop Printer.Print sText End Sub
وبعد ذلك ضع الكود التالي :
Private Sub ResultsPrint() Dim nLoopCtr As Integer Dim sOutput(2) As String Dim nScaleMode As Integer nScaleMode = Printer.ScaleMode Printer.ScaleMode = vbInches 'عليك أن تضيف بنفس الطريقة التالية حسب عدد الأعمدة DBGrid1.Row = 0 DBGrid1.Col = 0 sOutput(0) = DBGrid1.Text DBGrid1.Col = 1 sOutput(1) = DBGrid1.Text DBGrid1.Col = 2 sOutput(2) = DBGrid1.Text 'نوع الخط الذي سوف يطبع PrintFont "Arial", 16, True, True, False 'العنوان PrintText 0, 0, "Print - " & Me.Caption PrintFont "Arial", 12, True, True, False PrintText 0, 0.5, "Date: " & Date$ PrintFont "Arial", 12, True, False, True 'عليك أن تضيف مثل السطور التالية حسب عدد الأعمدة PrintText 0, 1, sOutput(0) PrintText 1, 1, sOutput(1) PrintText 2, 1, sOutput(2) PrintFont "Arial", 12, False, False, False For nLoopCtr = 1 To mnCurrentRow - 1 DBGrid1.Row = nLoopCtr 'عليك أن تضيف مثل السطور التالية حسب عدد الأعمدة لديك DBGrid1.Col = 0 sOutput(0) = DBGrid1.Text DBGrid1.Col = 1 sOutput(1) = DBGrid1.Text DBGrid1.Col = 2 sOutput(2) = DBGrid1.Text 'عليك أن تضيف مثل السطور التالية حسب عدد الأعمدة لديك PrintText 0, 1 + (nLoopCtr * 0.25), sOutput(0) PrintText 1, 1 + (nLoopCtr * 0.25), sOutput(1) PrintText 2, 1 + (nLoopCtr * 0.25), sOutput(2) Next nLoopCtr Printer.EndDoc Printer.ScaleMode = nScaleMode End Sub
وفي زر الطباعة ضع الكود التالي:
Call ResultsPrint
تم تعديل هذه المشاركة بواسطة professional VB99 في 17 يونيو 2005 في 05:43