----Gittersteuerelemente sind eines der am häufigsten verwendeten Steuerelemente in Visual Basic, das von VB3.0 bis VB5.0 verfügbar ist. Es ist auch eines der beliebtesten Tools für VB-Enthusiasten. Es kann zum Anzeigen und Durchsuchen von Daten in Form von Tabellen verwendet werden, insbesondere für Datenbankanwendungen. Durch direkte Bindung können Datenbankinformationen angezeigt und durchsucht werden. Der Wermutstropfen ist jedoch, dass Grid keine Bearbeitungs- und Druckfunktionen bietet und die Positionen von Spalten nicht untereinander ausgetauscht werden können. Der Autor hat versucht, Grid um diese Funktionen zu erweitern, um es noch besser und leistungsfähiger zu machen. Die Verbesserungsmethode und das Quellprogramm sind unten angegeben. Leser müssen lediglich das Quellprogramm gemäß den Schritten schreiben, damit Ihr Grid über eine Druckfunktion verfügt. Der Autor hat dieses Programm mit VB5.0 in der HP5/100Window95-Umgebung debuggt und übergeben.
----Es gibt drei Möglichkeiten, das Drucken zum Rastersteuerelement hinzuzufügen: 1. Drucken Sie das Steuerelement direkt aus, 2. realisieren Sie die Druckfunktion über PRinter und 3. realisieren Sie das Drucken durch Aufrufen von MS-Word und MS-Excel.
----Öffnen Sie zunächst eine Anwendung, fügen Sie das DATA-Steuerelement DATA1 in FORM1 hinzu, setzen Sie das CONNECT-Attribut von DATA1 auf dBASEIII und dann das DATABASENAME-Attribut auf D:/PJXM.DBF. Fügen Sie dann den MSFLEXGRID-Bereich GRID1 in FORM1 hinzu und setzen Sie das DATASOURCE-Attribut von GRID1 auf DATA1. Auf diese Weise werden die Informationen der Datenbank PJXM.DBF in GRID1 angezeigt.
----Methode 1: Drucken Sie die Formularmethode direkt aus, fügen Sie in FORM1 eine Befehlsschaltfläche (Befehl) hinzu, setzen Sie das CAPTION-Attribut auf Direktdruck und schreiben Sie dann den folgenden Code:
Unterbefehl_klicken
Form1.printform
Endsub
----Auf diese Weise können die Daten von GRID1 durch Drucken von Formular 1 ausgedruckt werden. Leider kann nur der in GRID1 angezeigte Datenteil gedruckt werden ist einem Bildschirm sehr ähnlich und druckt auch andere Steuerelemente aus. Es kann auch Schriftarten usw. nicht flexibel steuern.
----Methode 2: Drucken über DRUCKER. diese Methode
----1. Fügen Sie die Druckbefehlsschaltfläche (Befehl1) und die Funktion (prnt1) hinzu. Schreiben Sie den folgenden Code mit geringfügigen Änderungen.
Functionprnt1(xAsInteger,yAsInteger,
(fontAsSingle,txtAsString)
Drucker.CurrentX=x
Drucker.CurrentY=y
Printer.FontBold=False
Printer.FontSize=Schriftart
Drucker.Printtxt
EndFunction
Unterbefehl1_click
DimfntAsSingle
Dimppasinteger
Pp=0'Legen Sie die Nummer der Startseite auf 0 fest
Dimstry,strx,strx1,stry1,linw,page1,pAsInteger
„Statica(8)AsInteger“ definiert die Anzahl der zu druckenden Spalten
ss$="Internal Settlement Deposit Statement"'define header
kan=0
Fori=0To8
a(i)=1500' definiert die Breite jeder Spalte
kan=kan a(i)'berechnet die Gesamtbreite der Tabelle
Nächste
page1=50' definiert die Anzahl der Zeilen pro Seite
strx=200
strx1=200' definiert die Startposition in X-Richtung
stry=1400
stry1=1400' definiert die Startposition in Y-Richtung
linw=240' definiert die Linienbreite
fnt=8'Schriftgröße definieren
Printer.fontname="宋体"'Schriftart definieren
dd=prnt1(4000,700,18,ss$)'Titel drucken
Printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
Forj=0Togridrow-1'gridrow ist die Anzahl der zu druckenden Zeilen
grid1.row=j
strx=strx1
Printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
p=p 1
Fori=0To8
grid1.col=i
dd=prnt1(strx,stry,fnt,grid1.text)
strx=strx a(i)
Nächste
Ifp>page1Then'nextpage
p=0
strx=strx1
'linelastline
Printer.Line(strx-50,stry linw)
-(strx kan-10,stry linw)
stry=stry1
'linecol
Forn=0To8
Printer.Line(strx-30,stry-30)
-(strx-30,stry (page1 2)*linw)
strx=strx a(n)
Nächste
Printer.Line(strx-30,stry-30)
-(strx-30,stry (page1 2)*linw)
pp=pp 1
foot$="th" cstr(pp) "page"
dd=prnt1(strx-30-1000,stry (page1 2)
*linw 100,10,foot$)'Seitenecknummer drucken
Printer.NewPage'nextpage
dd=prnt1(4000,700,18,ss$)'Titel drucken
strx=strx1
stry=stry1
Printer.Line(strx-50,stry-30)-
(strx kan-10,stry-30)'printfirstrow
Anders
stry=stry linw
EndIf
Nächste
st=stry
Ifp<page1Then' markiert die verbleibenden Leerzeilen auf der letzten Seite
Foro=pTopage1 1
strx=strx1
Printer.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
stry=stry linw
Nächste
EndIf
stry=stry1
strx=strx1
stry=stry1'linecol
Forn=0To8
Printer.Line(strx-30,stry-30)-
(strx-30,stry (page1 2)*linw)
strx=strx a(n)
Nächste
Printer.Line(strx-30,stry-30)-
(strx-30,stry (page1 2)*linw)
pp=pp 1
foot$="th" cstr(pp) "page"
dd=prnt1(strx-30-1000,stry (page1 2)
*linw 100,10,foot$)'Seitenecknummer drucken
Printer.EndDoc'Ende des Druckvorgangs
Endsub
----Mit dieser Methode können Schriftarten, Schriftstile, Linienformen, Seiten, Papiergrößen usw. durch flexible Programmierung problemlos angepasst werden. Kann zufriedenstellende Ergebnisse ausdrucken. Wenn MICROSOFTWORD und MICROEXCEL auf Ihrem Computer installiert sind, besteht die aufregendste Art der Verwendung darin, die GRID-Tabelle über VB an MICROSOFTWORD und MICROEXCEL zu senden. Generieren Sie MICROSOFTWORD- und MICROEXCEL-Tabellen. Auf diese Weise können Sie die Druck- und Bearbeitungsfunktionen von MICROSOFTWORD und MICROEXCEL voll ausnutzen, um optimalere Ergebnisse zu drucken. Nachfolgend werden sie einzeln vorgestellt.
----Methode 3: Drucken durch Generieren eines MICROSOFTWORD-Formulars
----1. Schreiben Sie in die Erklärung:
DimmswordAsObject
----2. Fügen Sie die Druckbefehlsschaltfläche (Befehl2) hinzu und setzen Sie CAPTION auf „WORD-Tabelle generieren“.
„Formatieren“, schreiben Sie den folgenden Code,
PrivateSubcommand2_Click()
screen.MousePointer=11
Setmsword=CreateObject("word.basic")
DimAppID,ReturnValue
appID=Shell("d:/office97/office/WINWORD.EXE",1)
'Führen Sie Microsoft Word aus.
msword.AppActivate"MicrosoftWord"
'msword.AppActivate"MicrosoftWord",1
voll
Screen.MousePointer=0
EndSub
----2. Schreiben Sie den folgenden Prozess full()
Subfull()
DimiAsInteger,jAsInteger,
colAsInteger,rowAsInteger
DimcellcontentAsString
Ich.Verstecke
cols=4'Die Anzahl der Spalten in der Tabelle
row=gridrow' gibt die Anzahl der Zeilen in der Tabelle aus
msword.filenewdefault
msword.MsgBox"MS_WORD-Bericht wird erstellt,
Bitte warten...","",-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,row,,,16,167
msword.startofdocument
forj=0togridrow'Die Anzahl der Zeilen in der Tabelle
grid1.row=j
Fori=1Tocols
Gri1d.col=i
IfIsNull(grid1.text)Then
Zellinhalt$=""
Anders
Zellinhalt$=grid1.text
EndIf
msword.Insertcellcontent$
msword.nextcell
Nexti
Weiterj
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.startdocument
msword.screenrefresh
msword.screenupdating1
msword.MsgBox"End","",-1
Me.Show
EndSub
----Methode 4: Drucken Sie das Formular aus, indem Sie es an MICROSOFTEXCEL senden
----1. Fügen Sie die Druckbefehlsschaltfläche (Befehl3) hinzu und setzen Sie CAPTION auf „EXCEL-Tabelle generieren“.
„Formatieren“, schreiben Sie den folgenden Code
PrivateSubcommand3_Click()
DimiAsInteger
DimjAsInteger
DimxlAppAsExcel.application
DimxlBookAsExcel.Workbook
DimxlSheetAsExcel.Worksheet
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
Forj=0To6
Grid1.Col=j
IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i 5,j 1)=Grid1.Text
EndIf
Weiterj
Nexti
ExitSub->