Вы находитесь на странице: 1из 4

El procedimiento completo es el que sigue:

Private Sub ConfigCabeceraCodigo(ByRef Textocabecera() As CabecDetalle)


Dim Fuente As Font
Dim Lapiz As New System.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim AnchoString As New SizeF
Dim Formato As New System.Drawing.StringFormat
Dim Cx As Long
Dim Grafico As Graphics = Me.CreateGraphics
Dim X As Integer
Fuente = Est_Lin_Det

' Campos del listado


TextoCabecera(0).Texto = "Num. "
TextoCabecera(1).Texto = "Servicio
TextoCabecera(2).Texto = "Fecha
TextoCabecera(3).Texto = "Hora

"
"

"

TextoCabecera(4).Texto = ""

' Formato del texto


Formato.FormatFlags = StringFormatFlags.MeasureTrailingSpaces
' Margen lateral
Cx = CLng(Hoja.DefaultPageSettings.Margins.Left)
' Fuente a utilizar
Fuente = New Font("Arial", 12, FontStyle.Italic)

' Bucle de clculo


While X < UBound(Textocabecera)
Textocabecera(X).Cx = Cx
' Ancho del texto

AnchoString = Grafico.MeasureString(StrDup(Len(Textocabecera(X).Texto), "n"


), Fuente)
Cx = CLng(Cx + AnchoString.Width)
X = X + 1
End While
End Sub
Hasta aqu, el cdigo se ejecuta desde este procedimiento al cual llamaremos cuando
se de la situacin de cambio de pgina.

Private Sub Cabeceras(ByRef Cy As Single, _


ByVal e As System.Drawing.Printing.PrintPageEventArgs)

LineaIden(Cy, ContPag, e)

' Lnea de identificacin

Titulo(Cy, e, "Listado de reservas por scios")

' Ttulo del listado

Cabecera(Cy, TextoCabecera, e)

' Cabecera de detalle

End Sub

Si en nuestro listado necesitamos unas lneas de ampliacin de los datos del listado
, podemos utilizar

Private Sub SubCabecera(ByRef Cy As Single, _


ByVal Texto As String, _
ByVal D As String, _
ByVal H As String, _
ByVal e As System.Drawing.Printing.PrintPageEventArgs)

Dim Grafico As Graphics = Me.CreateGraphics


Dim AnchoString As New SizeF
Dim Fuente As Font
Dim Pincel As New System.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim Cx As Single

Fuente = Est_Cabecera
D = Strings.Left(D, 2) & "-" & Strings.Mid(D, 3, 2) & "-" & Strings.Right(D, 4
)
H = Strings.Left(H, 2) & "-" & Strings.Mid(H, 3, 2) & "-" & Strings.Right(H, 4
)

Cx = CSng(e.PageBounds.Width * 0.07)
e.Graphics.DrawString("Nombre del scio ", Fuente, Pincel, Cx, Cy)
Cx = CSng(e.PageBounds.Width * 0.25)
e.Graphics.DrawString(" : " & Texto, Fuente, Pincel, Cx, Cy)
Cy = Cy + Fuente.Height

Cx = CSng(e.PageBounds.Width * 0.07)
e.Graphics.DrawString("Desde ", Fuente, Pincel, Cx, Cy)
Cx = CSng(e.PageBounds.Width * 0.25)
e.Graphics.DrawString(" : " & D, Fuente, Pincel, Cx, Cy)
Cy = Cy + Fuente.Height

Cx = CSng(e.PageBounds.Width * 0.07)
e.Graphics.DrawString("Hasta ", Fuente, Pincel, Cx, Cy)
Cx = CSng(e.PageBounds.Width * 0.25)
e.Graphics.DrawString(" : " & H, Fuente, Pincel, Cx, Cy)
Cy = Cy + Fuente.Height
End Sub

Que llamaramos desde el procedimiento de cabeceras.

Private Sub Cabeceras(ByRef Cy As Single, _


ByVal e As System.Drawing.Printing.PrintPageEventArgs)

LineaIden(Cy, ContPag, e)

' Lnea de identificacin

Titulo(Cy, e, "Listado de reservas por scio.")

' Ttulo del listado

SubCabecera(Cy, Reg.Item("NomSocio").ToString, Campo01.Text, Campo02.Text, e)


Cabecera(Cy, TextoCabecera, e)
End Sub

El siguiente paso sera las lneas de detalle.

' Cabecera de detalle

Вам также может понравиться