Está en la página 1de 4

54.7. Ms situaciones.

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.

Private Sub Hoja_BeginPrint(ByVal sender As Object, _


ByVal e As System.Drawing.Printing.PrintEventArgs)
_
Handles Hoja.BeginPrint

Configuracion()
Empresa(e, Cy, Reg)
Cliente(e, Cy)
IdentificacionAlbaran(e,Cy)
End Sub

A continuacin disponemos de un ejemplo de dicho tipo de procedimientos.

Public Sub Empresa(ByVal e As System.Drawing.Printing.PrintPageEventArgs, _

ByRef Cy As Single, _
ByVal RegParam As DataRow)

Dim AnchoString As New SizeF


Dim Fuente As Font
Dim Pincel As New System.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim Despla As New SizeF
Dim Provinc As String
Dim Cx As Long
Cy = CLng(e.PageSettings.PaperSize.Height * 0.05)
Fuente = Est_Lin_Det

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

e.Graphics.DrawString("Fax " & .Item("Fax").ToString, Fuente, Pincel, Cx, C


y)
Cy = Cy + Fuente.Height
e.Graphics.DrawString(" " & .Item("EMail").ToString, Fuente, Pincel, Cx, Cy
)
End With
Cy = Cy + Fuente.Height
End Sub

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)

Es decir ms bajo y ms a la derecha.


As con cada bloque de datos que se enven a imprimir.
Por ejemplo la identificacin de un albarn podra ser

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.

También podría gustarte