Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Un listado no siempre tiene que ser tabular, a veces hay que realizar listados o
impresos en los que hay que colocar membretes, o direcciones de clientes, etc.
Hay que tener presente un matiz, antiguamente las impresoras no eran
direccionables
,
e imprima lnea a lnea en la impresora directamente, por lo tanto haba que respetar e
se orden secuencial de trabajo, que no se poda saltar.
Actualmente se imprime sobre un objeto, sea el que sea, y como se llame, que en
realidad est en memoria, y trabajamos con las coordenadas x, y, horizontal y vert
icalmente, de tal forma que como la impresin se realiza al enviar la hoja a la im
presora, podemos imprimir cualquier parte del listado en el momento que deseemos
, otra cosa es que por lgica, lo hagamos de una manera ms o menos ordenada.
Dicho de otra forma, podramos dividir la hoja en zonas, y hacer cada paso en el o
rden que deseemos.
A partir de esta situacin, cuando tengamos que realizar un impreso, en el que est
ar el membrete de la empresa, la zona de identificacin del documento, el cliente a
l que va dirigido etc., se pueden crear procedimientos independientes para cada
una de estas tareas.
Lo nico que hay que tener presente es que cada uno tendr una zona de la hoja asign
ada, y ah es donde habr que posicionarse para su impresin.
Por lo tanto podramos encontrarnos en el evento BeginPrint con algo similar a est
o.
Configuracion()
Empresa(e, Cy, Reg)
Cliente(e, Cy)
IdentificacionAlbaran(e,Cy)
End Sub
ByRef Cy As Single, _
ByVal RegParam As DataRow)
Cx = CLng(e.PageSettings.PaperSize.Width * 0.05)
LeerProvincia(Conexion, Mid(RegParam.Item("CodPos").ToString, 1, 2),Provinc, "
")
With Reg
e.Graphics.DrawString(.Item("Descripcion").ToString, Fuente, Pincel, Cx, Cy)
Cy = Cy + Fuente.Height
e.Graphics.DrawString(.Item("Domicilio").ToString, Fuente, Pincel, Cx, Cy)
Cy = Cy + Fuente.Height
e.Graphics.DrawString(.Item("Poblacion").ToString, Fuente, Pincel, Cx, Cy)
Cy = Cy + Fuente.Height
e.Graphics.DrawString(.Item("CodPos").ToString & " " & Provinc, Fuente, Pin
cel, Cx, Cy)
Cy = Cy + Fuente.Height
e.Graphics.DrawString("N.I.F. " & .Item("NIF").ToString, Fuente, Pincel, Cx,
Cy)
Cy = Cy + Fuente.Height
e.Graphics.DrawString("Tel. " & .Item("Telefono").ToString, Fuente, Pincel,
Cx, Cy)
Cy = Cy + Fuente.Height
La ubicacin en la hoja viene marcada por los valores que asignemos en estas varia
bles al inicio del procedimiento.
Cy = CLng(e.PageSettings.PaperSize.Height * 0.05)
Cx = CLng(e.PageSettings.PaperSize.Width * 0.05)
En esta lnea indicaremos donde empezamos a imprimir los datos, en este caso de la
empresa.
Cy = CLng(e.PageSettings.PaperSize.Height * 0.05)
Cx = CLng(e.PageSettings.PaperSize.Width * 0.05)
Si deseamos que esta impresin fuera la los datos del cliente, podramos iniciar con
Cy = CLng(e.PageSettings.PaperSize.Height * 0.08)
Cx = CLng(e.PageSettings.PaperSize.Width * 0.6)
Cy = CLng(e.PageSettings.PaperSize.Height * 0.15)
Cx = CLng(e.PageSettings.PaperSize.Width * 0.08)
Empezara siempre en un quince por ciento del alto, y a un ocho por ciento del anc
ho.
54.8. Acabando.
Los ejemplos aqu expuestos, son versiones didcticas, y que en algunos casos estn re
ducidas.
Como ltimo, el motivo de que exista en la estructura de datos, un elemento siempr
e con valor nulo, es para obtener en los casos que fuera necesario, la coordenad
a X del extremo derecho del listado, que se podra hacer de cualquier otra forma,
pero esta es una ms.
Evidentemente el uso de Crystal Reports es muy cmodo, la ventaja de hacerlo de es
ta forma es la de controlar el sistema, y poderlo personalizar como se desee, y
adems llegar donde de otra forma a lo mejor no sera posible hacerlo.