----El control de cuadrícula es uno de los controles más comunes en Visual Basic, que está disponible desde VB3.0 a VB5.0. También es una de las herramientas favoritas de los entusiastas de VB. Se puede utilizar para mostrar y explorar datos en forma de tablas, especialmente para aplicaciones de bases de datos. El enlace directo puede mostrar y explorar información de la base de datos. Sin embargo, el problema es que Grid no tiene funciones de edición e impresión, y las posiciones de las columnas no se pueden intercambiar entre sí. El autor ha intentado añadir estas funciones a Grid para hacerlo aún mejor y más potente. El método de mejora y el programa fuente se detallan a continuación. Los lectores solo necesitan escribir el programa fuente de acuerdo con los pasos para que su Grid tenga la función de impresión. El autor depuró este programa usando VB5.0 en el entorno HP5/100Window95 y lo aprobó.
----Hay tres formas de agregar impresión al control Grid: 1. Imprimir el control directamente, 2. realizar la función de impresión a través de PRinter y 3. realizar la impresión llamando a MS-Word y MS-Excel.
----Primero, abra una aplicación, agregue el control DATA1 en FORM1, establezca el atributo CONNECT de DATA1 en dBASEIII y luego establezca el atributo DATABASENAME en D:/PJXM.DBF. Luego agregue el espacio MSFLEXGRID GRID1 en FORM1 y establezca el atributo DATASOURCE de GRID1 en DATA1. De esta forma la información de la base de datos PJXM.DBF se mostrará en GRID1.
---- Método 1: imprima directamente el método del formulario, agregue un botón de comando (comando) en FORM1, configure el atributo CAPTION para impresión directa y luego escriba el siguiente código:
Subcomando_clic
Formulario1.imprimirformulario
Finsub
----De esta manera, los datos de GRID1 se pueden imprimir imprimiendo el formulario FORM1. Desafortunadamente, solo se puede imprimir la parte de datos que se muestra en GRID1. Si no se muestra, no se puede imprimir. Es muy parecido a una pantalla. La copia impresa también imprime otros controles. Tampoco puede controlar de manera flexible las fuentes, etc.
----Método 2: Imprimir a través de IMPRESORA. este método
----1. Agregue el botón de comando de impresión (comando1) y la función (prnt1) para realizar la función de impresión. Escriba el siguiente código. El lector puede escribirlo en una función o proceso estándar con ligeros cambios.
Funciónprnt1(xAsInteger,yAsInteger,
fuenteAsSingle,txtAsString)
impresora.CurrentX=x
impresora.CurrentY=y
impresora.FontBold=Falso
impresora.FontSize=fuente
impresora.Printtxt
Función final
Subcomando1_clic
DimfntComoÚnico
Dimppasínteger
Pp=0'Establecer el número de página inicial 0
Dimstry,strx,strx1,stry1,linw,página1,pAsInteger
Statica(8)AsInteger' define el número de columnas a imprimir
ss$="Declaración de depósito de liquidación interna"'definir encabezado
can=0
Fori=0A8
a(i)=1500' define el ancho de cada columna
kan=kan a(i)'calcula el ancho total de la mesa
Próximo
page1=50' define el número de líneas por página
cadena=200
strx1=200' define la posición inicial en la dirección X
intento=1400
stry1=1400' define la posición inicial en la dirección Y
linw=240' define el ancho de línea
fnt=8'definir tamaño de fuente
impresora.fontname="宋体"'definir fuente
dd=prnt1(4000,700,18,ss$)'Imprimir título
impresora.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
Forj=0Togridrow-1'gridrow es el número de líneas que se imprimirán
grid1.fila=j
cadena=cadena1
impresora.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
p=p 1
Fori=0A8
grid1.col=yo
dd=prnt1(strx,stry,fnt,grid1.texto)
cadenax=cadenax a(i)
Próximo
Ifp>página1Luego'siguientepágina
p=0
cadena=cadena1
'líneaúltima línea
impresora.Line(strx-50,stry linw)
-(strx kan-10,stry linw)
intento=intento1
'líneacol
Forn=0A8
impresora.Line(strx-30,stry-30)
-(strx-30,stry (página1 2)*linw)
cadenax=cadenax a(n)
Próximo
impresora.Line(strx-30,stry-30)
-(strx-30,stry (página1 2)*linw)
páginas=páginas 1
pie$="th" cstr(pp) "página"
dd=prnt1(strx-30-1000,stry (página1 2)
*linw 100,10,foot$)'Imprimir número de esquina de página
impresora.NuevaPágina'siguientepágina
dd=prnt1(4000,700,18,ss$)'Imprimir título
cadena=cadena1
intento=intento1
impresora.Line(strx-50,stry-30)-
(strx kan-10,stry-30)'imprimir primera fila
Demás
stry=stry línea
Fin si
Próximo
st=intento
Ifp<página1Entonces' marque las líneas en blanco restantes en la última página
Foro=pTopage1 1
cadena=cadena1
impresora.Line(strx-50,stry-30)
-(strx kan-10,stry-30)
stry=stry línea
Próximo
Fin si
intento=intento1
cadena=cadena1
stry=stry1'linecol
Forn=0A8
impresora.Line(strx-30,stry-30)-
(strx-30,stry (página 1 2)*linw)
cadenax=cadenax a(n)
Próximo
impresora.Line(strx-30,stry-30)-
(strx-30,stry (página 1 2)*linw)
páginas=páginas 1
pie$="th" cstr(pp) "página"
dd=prnt1(strx-30-1000,stry (página1 2)
*linw 100,10,foot$)'Imprimir número de esquina de página
impresora.EndDoc'Fin de la impresión
Finsub
----Este método puede ajustar fácilmente fuentes, estilos de fuente, formas de líneas, páginas, tamaños de papel, etc. mediante una programación flexible. Puede imprimir resultados satisfactorios. Si MICROSOFTWORD y MICROEXCEL están instalados en su computadora, la forma más interesante de usarlos es enviar la tabla GRID a MICROSOFTWORD y MICROEXCEL a través de VB. Generar tablas MICROSOFTWORD y MICROEXCEL. De esta manera, puede aprovechar al máximo las funciones de impresión y edición de MICROSOFTWORD y MICROEXCEL para imprimir resultados más ideales. Presentados uno por uno a continuación.
----Método 3: Imprimir generando el formulario MICROSOFTWORD
----1. Escriba en la declaración:
Espada Dimm como objeto
----2. Agregue el botón de comando de impresión (comando2) y configure CAPTION en "Generar tabla de WORD".
"Formatear", escribe el siguiente código,
Subcomando privado2_Click()
pantalla.MousePointer=11
Setmsword=CrearObjeto("palabra.basic")
DimAppID, valor de retorno
ID de aplicación=Shell("d:/office97/office/WINWORD.EXE",1)
'Ejecute MicrosoftWord.
msword.AppActivar"MicrosoftWord"
'msword.AppActivate"MicrosoftWord",1
lleno
Pantalla.MousePointer=0
FinSub
----2. Escribe el siguiente proceso completo().
Subcompleto()
DimiAsInteger,jAsInteger,
colComoEntero,filaComoEntero
DimcellcontentAsString
Yo.Ocultar
cols=4'El número de columnas de la tabla
fila=gridrow' imprime el número de filas en la tabla
msword.filenewdefault
msword.MsgBox"Creando informe MS_WORD,
Espere por favor...","",-1
msword.leftpara
msword.screenupdating0
msword.tableinserttable,col,fila,,,16,167
msword.iniciodeldocumento
forj=0togridrow'El número de filas de la tabla
grid1.fila=j
Fori=1Tocolos
Gri1d.col=i
Si es nulo (grid1.text) entonces
contenido celular$=""
Demás
contenido de celda $ = grid1.text
Fin si
msword.Insertar contenido de celda$
msword.nextcell
Siguiente
Siguientej
msword.tabledeleterow
msword.iniciodeldocumento
msword.tableselectrow
msword.tableheadings1
msword.centerpara
'msword.startdocument
msword.refrescarpantalla
msword.screenupdating1
msword.MsgBox"Fin","",-1
Yo.Mostrar
FinSub
----Método 4: Imprima el formulario enviándolo a MICROSOFTEXCEL
----1. Agregue el botón de comando de impresión (comando3) y configure CAPTION en "Generar tabla EXCEL".
"Formatear", escribe el siguiente código
Subcomando privado3_Click()
DimiAsInteger
DimjAsInteger
Aplicación DimxlAppAsExcel.
DimxlBookAsExcel.Libro de trabajo
DimxlSheetAsExcel.Hoja de trabajo
SetxlApp=CreateObject("Excel.Aplicación")
xlApp.Visible=Verdadero
'SetxlBook=xlApp.Workbooks.Agregar
'OnErrorResumeSiguiente
SetxlBook=xlApp.Workbooks.Add'Open("d:/text2.xls")
SetxlSheet=xlLibro.Hojas de trabajo(1)
xlSheet.Cells(6,1)="i"
Fori=0Togridrow
cuadrícula1.Fila=i
Forj=0A6
Cuadrícula1.Col=j
IfIsNull(Grid1.Text)=FalseThen
xlSheet.Cells(i 5,j 1)=Grid1.Texto
Fin si
Siguientej
Siguiente
SalirSub->