Unidad 54. Impresión (III)





Los procedimientos para obtener dicho resultado podrían ser:

El título.

 

 Public Sub Titulo(ByRef Cy As Single, _

ByVal e As System.Drawing.Printing.PrintPageEventArgs, _

ByVal Texto As String)

 

Dim Fuente As Font = New Font("Arial", 16, FontStyle.Italic)

Dim Pincel As New System.Drawing.SolidBrush(System.Drawing.Color.Black)

 

Dim Ancho As Long = e.PageSettings.PaperSize.Width

Dim Cx As Long '  Coordenada horizontal

 

Cx = CLng(Ancho * 0.05)   '  Margen izquierdo

Cy = Cy + Fuente.Height   '  Separación de línea

e.Graphics.DrawString(Texto, Fuente, Pincel, Cx, Cy)

Cy = Cy + Fuente.Height   '  Separación de línea

 End Sub

 

 

El siguiente paso sería la cabecera de detalle.

 

 Public Sub Cabecera(ByRef Cy As Single, _

ByVal TextoCab() As CabecDetalle, _

ByVal e As System.Drawing.Printing.PrintPageEventArgs)

 

Dim Fuente As Font

Dim Pincel As New System.Drawing.SolidBrush(System.Drawing.Color.Black)

Dim Lapiz As New Pen(Color.Black, 3)

Dim Ancho As Long = e.PageSettings.PaperSize.Width

Dim X As Integer

 

Select Case e.PageSettings.Landscape

Case True

Ancho = e.PageSettings.PaperSize.Height

Case Else

Ancho = e.PageSettings.PaperSize.Width

End Select

 

Fuente = Est_Cabecera

Cy = Cy + Fuente.Height ' Separación del título

While X < UBound(TextoCab)

e.Graphics.DrawString(TextoCab(X).Texto, Fuente, Pincel, TextoCab(X).Cx, Cy)

X = X + 1

End While

Cy = Cy + Fuente.Height ' Avance de línea

Cy = Cy + 10   ' Línea de subrayado

e.Graphics.DrawLine(Lapiz, CInt(Ancho * 0.05), Cy, CInt(Ancho * 0.95), Cy)

 End Sub

 

Observemos el siguiente fragmento de código:

 

  While X < UBound(TextoCab)

  e.Graphics.DrawString(TextoCab(X).Texto, Fuente, Pincel, TextoCab(X).Cx, Cy)

  X = X + 1

  End While

 

En el bucle vemos como a partir del contenido del vector TextoCabecera, colocamos el contenido de la Cabecera de detalle.

 

  TextoCab(X).Texto

 

Y utilizamos

 

  TextoCab(X).Cx

 

Para colocar en el punto adecuado dicho texto.

 

Esta es la forma de asignar los datos al vector en el que creamos el contenido de los campos del listado:

 

' Campos del listado

  TextoCabecera(0).Texto = "Num.  "

  TextoCabecera(1).Texto = "Servicio   "

  TextoCabecera(2).Texto = "Fecha   "

  TextoCabecera(3).Texto = "Hora "

  TextoCabecera(4).Texto = ""

 

Después lo usamos para calcular la coordenada X de cada campo:

 

' 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

 

Este cálculo se realiza en base a una fuente definida para la línea de detalle.

 

  ' Fuente a utilizar

  Fuente =  New Font("Arial", 12, FontStyle.Italic)

 

El valor inicial del lateral del listado será:

 

 ' Margen lateral

 Cx = CLng(Hoja.DefaultPageSettings.Margins.Left)

 

De esta forma conseguimos tener un punto donde colocar cada uno de los campos en el objeto de listado.

 

Octubre-2010
Pág. 54.3

Atrás  Inicio  Adelante






Página inicial  Cursos Informática Gratuitos

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