----Le contrôle Grille est l'un des contrôles les plus courants dans Visual Basic, disponible de VB3.0 à VB5.0. C'est également l'un des outils préférés des passionnés de VB. Il peut être utilisé pour afficher et parcourir des données sous forme de tableaux, en particulier pour les applications de base de données. La liaison directe peut afficher et parcourir les informations de la base de données. Cependant, le problème est que Grid n'a pas de fonctions d'édition et d'impression, et les positions des colonnes ne peuvent pas être échangées entre elles. L'auteur a essayé d'ajouter ces fonctions à Grid pour le rendre encore meilleur et plus puissant. La méthode d'amélioration et le programme source sont indiqués ci-dessous. Les lecteurs n'ont qu'à écrire le programme source selon les étapes pour que votre grille ait une fonction d'impression. L'auteur a débogué ce programme en utilisant VB5.0 dans l'environnement HP5/100Window95 et l'a transmis.
----Il existe trois façons d'ajouter une impression au contrôle Grid : 1. Imprimez le contrôle directement, 2. réalisez la fonction d'impression via PRinter et 3. réalisez l'impression en appelant MS-Word et MS-Excel.
----Tout d'abord, ouvrez une application, ajoutez le contrôle DATA DATA1 dans FORM1, définissez l'attribut CONNECT de DATA1 sur dBASEIII, puis définissez l'attribut DATABASENAME sur D:/PJXM.DBF. Ajoutez ensuite l'espace MSFLEXGRID GRID1 dans FORM1 et définissez l'attribut DATASOURCE de GRID1 sur DATA1. De cette façon, les informations de la base de données PJXM.DBF seront affichées dans GRID1.
----Méthode 1 : imprimez directement la méthode de formulaire, ajoutez un bouton de commande (commande) dans FORM1, définissez l'attribut CAPTION sur impression directe, puis écrivez le code suivant :
Sous-commande_clic
Form1.printform
Sous-titre
----De cette façon, les données de GRID1 peuvent être imprimées en imprimant le formulaire FORM1 Malheureusement, seule la partie des données affichées dans GRID1 peut être imprimée. Si elle n'est pas affichée, elle ne peut pas être imprimée. ressemble beaucoup à un écran. La copie papier imprime également d'autres contrôles. Il ne peut pas non plus contrôler de manière flexible les polices, etc.
----Méthode 2 : Imprimer via IMPRIMANTE. cette méthode
----1. Ajoutez le bouton de commande d'impression (command1) et la fonction (prnt1) pour réaliser la fonction d'impression. Écrivez le code suivant dans une fonction ou un processus standard avec de légères modifications.
Functionprnt1(xAsInteger,yAsInteger,
fontAsSingle,txtAsString)
imprimante.CurrentX=x
imprimante.CurrentY=y
imprimante.FontBold=Faux
imprimante.FontSize=police
imprimante.Printtxt
FinFonction
Sous-commande1_clic
DimfntAsSingle
Dimppasinteger
Pp=0'Définissez le numéro de la page de démarrage 0
Dimstry,strx,strx1,stry1,linw,page1,pAsInteger
Statica(8)AsInteger' définit le nombre de colonnes à imprimer
ss$="Internal Settlement Deposit Statement"'define en-tête
kan=0
Fori=0To8
a(i)=1500' définit la largeur de chaque colonne
kan=kan a(i)'calcule la largeur totale du tableau
Suivant
page1=50' définit le nombre de lignes par page
strx=200
strx1=200' définit la position de départ dans la direction X
essai=1400
stry1=1400' définit la position de départ dans la direction Y
linw=240' définit la largeur de la ligne
fnt=8'définir la taille de la police
Printer.fontname="宋体"'définir la police
dd=prnt1(4000,700,18,ss$)'Titre à imprimer
imprimante.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
Forj=0Togridrow-1'gridrow est le nombre de lignes à imprimer
grille1.row=j
strx=strx1
imprimante.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
p=p1
Fori=0To8
grille1.col=i
jj=prnt1(strx,stry,fnt,grid1.text)
strx=strx a(je)
Suivant
Ifp>page1Puis'page suivante
p=0
strx=strx1
'lignedernière ligne
imprimante.Line(strx-50,stry linw)
-(strx kan-10,stry linw)
essai=essai1
'linecol
Forn=0À8
imprimante.Line(strx-30,stry-30)
-(strx-30,stry (page1 2)*linw)
strx=strx a(n)
Suivant
imprimante.Line(strx-30,stry-30)
-(strx-30,stry (page1 2)*linw)
pp=pp 1
foot$="th" cstr(pp) "page"
jj=prnt1(strx-30-1000,stry (page1 2)
*linw 100,10,foot$)'Imprimer le numéro du coin de la page
imprimante.NewPage'page suivante
dd=prnt1(4000,700,18,ss$)'Titre à imprimer
strx=strx1
essai=essai1
imprimante.Line(strx-50,stry-30)-
(strx kan-10,stry-30)'printfirstrow
Autre
stry=stry linw
FinSi
Suivant
st=essai
Ifp<page1Then' marque les lignes vides restantes sur la dernière page
Foro=pTopage1 1
strx=strx1
imprimante.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
stry=stry linw
Suivant
FinSi
essai=essai1
strx=strx1
stry=stry1'linecol
Forn=0À8
imprimante.Line(strx-30,stry-30)-
(strx-30,stry (page1 2)*linw)
strx=strx a(n)
Suivant
imprimante.Line(strx-30,stry-30)-
(strx-30,stry (page1 2)*linw)
pp=pp 1
foot$="th" cstr(pp) "page"
jj=prnt1(strx-30-1000,stry (page1 2)
*linw 100,10,foot$)'Imprimer le numéro du coin de la page
Printer.EndDoc'Fin de l'impression
Sous-titre
----Cette méthode peut facilement ajuster les polices, les styles de police, les formes de lignes, les pages, les formats de papier, etc. grâce à une programmation flexible. Peut imprimer des résultats satisfaisants. Si MICROSOFTWORD et MICROEXCEL sont installés sur votre ordinateur, la façon la plus intéressante de l'utiliser est d'envoyer la table GRID à MICROSOFTWORD et MICROEXCEL via VB. Générez des tables MICROSOFTWORD et MICROEXCEL. De cette façon, vous pouvez utiliser pleinement les fonctions d'impression et d'édition de MICROSOFTWORD et MICROEXCEL pour imprimer des résultats plus idéaux. Présentés un par un ci-dessous.
----Méthode 3 : Imprimer en générant un formulaire MICROSOFTWORD
----1. Écrivez dans la déclaration :
DimmswordAsObject
----2. Ajoutez le bouton de commande d'impression (commande2) et définissez CAPTION sur "Générer une table WORD".
"Formater", écrivez le code suivant,
PrivateSubcommand2_Click()
écran.MousePointer=11
Setmsword=CreateObject("word.basic")
DimAppID, valeur de retour
appID=Shell("d:/office97/office/WINWORD.EXE",1)
'Exécutez MicrosoftWord.
msword.AppActivate"MicrosoftWord"
'msword.AppActivate"MicrosoftWord",1
complet
Écran.MousePointer=0
FinSub
----2. Écrivez le processus suivant full().
Sous-complet()
DimiAsInteger,jAsInteger,
colAsInteger,rowAsInteger
DimcellcontentAsString
Moi.Masquer
cols=4'Le nombre de colonnes dans le tableau
row=gridrow' imprime le nombre de lignes dans le tableau
msword.filenewdefault
msword.MsgBox"Création du rapport MS_WORD,
Veuillez patienter...","",-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,ligne,,,16 167
msword.startofdocument
forj=0togridrow'Le nombre de lignes dans le tableau
grille1.row=j
Fori=1Tocols
Gri1d.col=je
IfIsNull(grid1.text)Alors
contenu de la cellule$=""
Autre
contenu cellulaire$=grid1.text
FinSi
msword.Insertcellcontent$
msword.nextcell
Suivant
Suivantj
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.startdocument
msword.screenrefresh
msword.screenupdating1
msword.MsgBox"Fin","", -1
Moi.Afficher
FinSub
----Méthode 4 : Imprimez le formulaire en l'envoyant à MICROSOFTEXCEL
----1. Ajoutez le bouton de commande d'impression (commande3) et définissez CAPTION sur "Générer une table EXCEL".
"Format", écrivez le code suivant
PrivateSubcommand3_Click()
DimiAsInteger
DimjAsInteger
DimxlAppAsExcel.application
DimxlBookAsExcel.Workbook
DimxlSheetAsExcel.Worksheet
SetxlApp=CreateObject("Excel.Application")
xlApp.Visible=Vrai
'SetxlBook=xlApp.Workbooks.Add
'OnErreurReprendreSuivant
SetxlBook=xlApp.Workbooks.Add'Open("d:/text2.xls")
SetxlSheet=xlBook.Worksheets(1)
xlSheet.Cells(6,1)="i"
Fori=0Togridrow
grille1.Row=i
Forj=0To6
Grille1.Col=j
IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i 5,j 1)=Grid1.Text
FinSi
Suivantj
Suivant
QuitterSub->