Unidad 54. Impresión (IV)





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 cálculo

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 código se ejecuta desde este procedimiento al cual llamaremos cuando se de la situación de cambio de página.

 

 Private Sub Cabeceras(ByRef Cy As Single, _

ByVal e As System.Drawing.Printing.PrintPageEventArgs)

 

LineaIden(Cy, ContPag, e)   ' Línea de identificación

Titulo(Cy, e, "Listado de reservas por sócios")   ' Título del listado

Cabecera(Cy, TextoCabecera, e) ' Cabecera de detalle

 End Sub

 

Si en nuestro listado necesitamos unas líneas de ampliación 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 sócio ", 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 llamaríamos desde el procedimiento de cabeceras.

 

Private Sub Cabeceras(ByRef Cy As Single, _

  ByVal e As System.Drawing.Printing.PrintPageEventArgs)

 

  LineaIden(Cy, ContPag, e) ' Línea de identificación

  Titulo(Cy, e, "Listado de reservas por sócio.") ' Título del listado

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

  Cabecera(Cy, TextoCabecera, e)   ' Cabecera de detalle

End Sub

 

El siguiente paso sería las líneas de detalle.

 

Octubre-2010
Pág. 54.4

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

Síguenos en:   Facebook       Sobre aulaClic            Política de Cookies