---- يعد التحكم في الشبكة أحد عناصر التحكم الأكثر شيوعًا في Visual Basic، وهو متوفر من VB3.0 إلى VB5.0. إنها أيضًا إحدى الأدوات المفضلة لعشاق VB. يمكن استخدامه لعرض وتصفح البيانات على شكل جداول، خاصة لتطبيقات قواعد البيانات. يمكن للربط المباشر عرض وتصفح معلومات قاعدة البيانات. ومع ذلك، فإن المشكلة تكمن في أن Grid لا يحتوي على وظائف التحرير والطباعة، ولا يمكن تبادل مواضع الأعمدة مع بعضها البعض. لقد حاول المؤلف إضافة هذه الوظائف إلى Grid لجعلها أفضل وأكثر قوة. طريقة التحسين والبرنامج المصدر موضحة أدناه، يحتاج القراء فقط إلى كتابة البرنامج المصدر وفقًا للخطوات لجعل شبكتك تتمتع بوظيفة الطباعة. قام المؤلف بتصحيح أخطاء هذا البرنامج باستخدام VB5.0 في بيئة HP5/100Window95 وتمريره.
----هناك ثلاث طرق لإضافة الطباعة إلى عنصر تحكم الشبكة: 1. طباعة عنصر التحكم مباشرة، 2. تحقيق وظيفة الطباعة من خلال PRinter، و3. تحقيق الطباعة عن طريق استدعاء MS-Word وMS-Excel.
---- أولاً، افتح تطبيقًا، وأضف عنصر التحكم DATA1 في FORM1، وقم بتعيين سمة CONNECT الخاصة بـ DATA1 إلى dBASEIII، ثم قم بتعيين سمة DATABASENAME إلى D:/PJXM.DBF. ثم قم بإضافة مساحة MSFLEXGRID GRID1 في FORM1، وقم بتعيين سمة DATASOURCE الخاصة بـ GRID1 إلى DATA1. بهذه الطريقة، سيتم عرض معلومات قاعدة البيانات PJXM.DBF في GRID1.
---- الطريقة الأولى: طباعة طريقة النموذج مباشرةً، وإضافة زر أمر (أمر) في FORM1، وتعيين سمة CAPTION على الطباعة المباشرة، ثم كتابة التعليمة البرمجية التالية:
Subcommand_click
Form1.printform
إندسوب
----بهذه الطريقة، يمكن طباعة بيانات GRID1 عن طريق طباعة النموذج FORM1. ولسوء الحظ، يمكن طباعة جزء البيانات المعروض في GRID1 فقط إذا لم يتم عرضه، علاوة على ذلك، لا يمكن طباعته يشبه إلى حد كبير الشاشة المطبوعة التي تطبع عناصر التحكم الأخرى أيضًا. كما أنه لا يمكنه التحكم بمرونة في الخطوط، وما إلى ذلك.
---- الطريقة الثانية: الطباعة من خلال الطابعة. هذه الطريقة
---- 1. أضف زر أمر الطباعة (command1) والوظيفة (prnt1) لتحقيق وظيفة الطباعة، ويمكن للقارئ كتابتها في وظيفة أو عملية قياسية مع تغييرات طفيفة.
وظيفةprnt1(xAsInteger،yAsInteger،
FontAsSingle،txtAsString)
الطابعة.CurrentX=x
الطابعة.CurrentY=y
print.FontBold=خطأ
print.FontSize=font
طابعة.Printtxt
وظيفة النهاية
الأمر الفرعي1_click
DimfntAsSingle
Dimppasinteger
Pp=0'قم بتعيين رقم صفحة البداية 0
Dimstry,strx,strx1,stry1,linw,page1,pAsInteger
يحدد Statica(8)AsInteger' عدد الأعمدة المراد طباعتها
ss$="بيان إيداع التسوية الداخلية"'تحديد الرأس
كان = 0
فوري = 0 إلى 8
a(i)=1500' يحدد عرض كل عمود
kan=kan a(i)'يحسب العرض الإجمالي للجدول
التالي
page1=50' يحدد عدد الأسطر في كل صفحة
ستريكس = 200
يحدد strx1=200' موضع البداية في الاتجاه X
ستراي = 1400
يحدد stry1=1400' موضع البداية في الاتجاه Y
linw=240' يحدد عرض الخط
fnt=8'تحديد حجم الخط
print.fontname="宋体"'تعريف الخط
dd=prnt1(4000,700,18,ss$)'طباعة العنوان
الطابعة.الخط (strx-50،stry-30)
-(ستركس كان-10،ستري-30)
Forj=0Togridrow-1'gridrow هو عدد الأسطر التي سيتم طباعتها
Grid1.row=j
strx=strx1
الطابعة.الخط (strx-50،stry-30)
-(ستركس كان-10،ستري-30)
ع=ع 1
فوري = 0 إلى 8
Grid1.col=i
dd=prnt1(strx,stry,fnt,grid1.text)
ستركس = ستركس أ (ط)
التالي
إذا ف> الصفحة 1 ثم الصفحة التالية
ع = 0
strx=strx1
'linelastline
طابعة.خط (strx-50، ستري لينيو)
-(ستركس كان-10،ستري لينو)
ستري=stry1
'linecol
فورن = 0 إلى 8
الطابعة.الخط (strx-30،stry-30)
-(strx-30,stry (صفحة 1 2)*linw)
ستركس = ستركس أ (ن)
التالي
الطابعة.الخط (strx-30،stry-30)
-(strx-30,stry (صفحة 1 2)*linw)
ص=ص 1
القدم $ = "ال" cstr (ص) "الصفحة"
dd=prnt1(strx-30-1000,stry (صفحة 1 2)
*linw 100,10,foot$)'طباعة رقم زاوية الصفحة
print.NewPage'nextpage
dd=prnt1(4000,700,18,ss$)'طباعة العنوان
strx=strx1
ستري=stry1
الطابعة.الخط (strx-50،stry-30)-
(strx kan-10,stry-30)'printfirstrow
آخر
stry=stry linw
EndIf
التالي
st=stry
Ifp<page1ثم قم بوضع علامة على الأسطر الفارغة المتبقية في الصفحة الأخيرة
فورو=pTopage1 1
strx=strx1
الطابعة.الخط (strx-50،stry-30)
-(ستركس كان-10،ستري-30)
stry=stry linw
التالي
EndIf
ستري=stry1
strx=strx1
stry=stry1'linecol
فورن = 0 إلى 8
الطابعة.الخط (strx-30،stry-30)-
(strx-30,stry (صفحة 1 2)*لينو)
ستركس = ستركس أ (ن)
التالي
الطابعة.الخط (strx-30،stry-30)-
(strx-30,stry (صفحة 1 2)*لينو)
ص=ص 1
القدم $ = "ال" cstr (ص) "الصفحة"
dd=prnt1(strx-30-1000,stry (صفحة 1 2)
*linw 100,10,foot$)'طباعة رقم زاوية الصفحة
الطابعة.EndDoc'نهاية الطباعة
إندسوب
---- يمكن لهذه الطريقة بسهولة ضبط الخطوط وأنماط الخطوط وأشكال الخطوط والصفحات وأحجام الورق وما إلى ذلك من خلال البرمجة المرنة. يمكن طباعة نتائج مرضية. إذا تم تثبيت MICROSOFTWORD وMICROEXCEL على جهاز الكمبيوتر الخاص بك، فإن الطريقة الأكثر إثارة لاستخدامهما هي إرسال جدول GRID إلى MICROSOFTWORD وMICROEXCEL من خلال VB. إنشاء جداول MICROSOFTWORD وMICROEXCEL. بهذه الطريقة، يمكنك الاستفادة الكاملة من وظائف الطباعة والتحرير الخاصة بـ MICROSOFTWORD وMICROEXCEL لطباعة نتائج أكثر مثالية. قدم واحدا تلو الآخر أدناه.
---- الطريقة الثالثة: الطباعة عن طريق إنشاء نموذج MICROSOFTWORD
----1. اكتب في الإعلان:
DimswordAsObject
----2 أضف زر أمر الطباعة (command2)، وقم بتعيين التسمية التوضيحية على "إنشاء جدول WORD".
"الفورمات" اكتب الكود التالي،
PrivateSubcommand2_Click()
شاشة.MousePointer=11
Setmsword=CreateObject("word.basic")
DimAppID، قيمة الإرجاع
appID=Shell("d:/office97/office/WINWORD.EXE"،1)
"تشغيل مايكروسوفت وورد."
msword.AppActivate"مايكروسوفت وورد"
'msword.AppActivate"MicrosoftWord"،1
ممتلىء
Screen.MousePointer=0
EndSub
----2.اكتب العملية التالية كاملة ()
كامل فرعي ()
ديميآسينتيجر، جآسينتيجر،
colAsInteger,rowAsInteger
DimcellcontentAsString
أنا.إخفاء
cols=4'عدد الأعمدة في الجدول
Row=gridrow' يطبع عدد الصفوف في الجدول
msword.filenewdefault
msword.MsgBox"إنشاء تقرير MS_WORD،
من فضلك انتظر..."،"،-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,row,,,16,167
msword.startofdocument
forj=0togridrow'عدد الصفوف في الجدول
Grid1.row=j
Fori=1Tocols
Gri1d.col=i
إذاIsNull(grid1.text)ثم
محتوى الخلية$=""
آخر
cellcontent$=grid1.text
EndIf
msword.Insertcellcontent$
msword.nextcell
نيكستي
التاليج
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.startdocument
msword.screenrefresh
msword.screenupdating1
msword.MsgBox"End"،""،-1
أنا.عرض
EndSub
---- الطريقة الرابعة: طباعة النموذج عن طريق إرساله إلى MICROSOFTEXCEL
----1. أضف زر أمر الطباعة (command3)، وقم بتعيين التسمية التوضيحية على "إنشاء جدول EXCEL".
"التنسيق" اكتب الكود التالي
PrivateSubcommand3_Click()
DimiAsInteger
DimjAsInteger
DimxlAppAsExcel.application
DimxlBookAsExcel.Workbook
ورقة عمل DimxlSheetAsExcel
SetxlApp=CreateObject("Excel.Application")
xlApp.Visible=True
'SetxlBook=xlApp.Workbooks.Add
""OnErrorResumeNext.""
SetxlBook=xlApp.Workbooks.Add'Open("d:/text2.xls")
SetxlSheet=xlBook.Worksheets(1)
xlSheet.Cells(6,1)="i"
Fori=0Togridrow
Grid1.Row=i
فورج = 0 إلى 6
Grid1.Col=j
IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i 5,j 1)=Grid1.Text
EndIf
التاليج
نيكستي
خروج->