Ver Mensaje Individual
  #8 (permalink)  
Antiguo 12/11/2008, 10:14
Jhoelo
 
Fecha de Ingreso: noviembre-2008
Mensajes: 2
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Re: Imprimir con coordenadas

Cita:
Iniciado por seques Ver Mensaje
Cierto jhonwilliams -y gracias de nuevo-, la clase graphics me permite ubicar texto en la posicion q quiera (supongo q el brushes."color", me permite determinar el color de la fuente). Hice lo sgte:

Private Sub imprimirCheque(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) _
Handles docImprimir.PrintPage

...variables de conexion

Dim ds as DataSet
Dim fecha, valor, orden, suma, suma1 As String
Dim fechaCoor() As String
Dim valorCoor() As String
Dim ordenCoor() As String
Dim sumaCoor() As String
Dim suma1Coor() As String

Dim coorFechaY, coorFechaX As Integer
Dim coorValorY, coorValorX As Integer
Dim coorOrdenY, coorOrdenX As Integer
Dim coorSumaY, coorSumaX As Integer
Dim coorSuma1Y, coorSuma1X As Integer

Dim VlrCheque, VlrFecha, Aquien As String

Dim vlrLetras, vlrLetras1, vlrLetras2 As String
cnxDB = New clsConexion

Try

...set de la conexion

'' Iniciar la transaccion
''OBTENER LAS COORDENADAS

....consulta para obtener las coordenadas especificadas para los vlrs.

fecha = CStr(ds.Tables(0).Rows(0)("fecha"))
valor = CStr(ds.Tables(0).Rows(0)("valor"))
orden = CStr(ds.Tables(0).Rows(0)("orden"))
suma = CStr(ds.Tables(0).Rows(0)("suma"))
suma1 = CStr(ds.Tables(0).Rows(0)("suma1"))

''Valores
VlrCheque = CStr(Me.txtValor.Text)
VlrFecha = CStr(Me.dtpFechaOrden.Value)
Aquien = CStr(Me.txtNomTer.Text)

''Proceso para la impresion del cheque

''Inserto al vector los valores de las coordenadas - FECHA
fechaCoor = fecha.Split(",")
coorFechaY = CInt(fechaCoor(0)) ''valor de la coordenada Y
coorFechaX = CInt(fechaCoor(1)) ''valor de la coordenada X

''Inserto al vector los valores de las coordenadas - VALOR
valorCoor = valor.Split(",")
coorValorY = CInt(valorCoor(0)) ''valor de la coordenada Y
coorValorX = CInt(valorCoor(1)) ''valor de la coordenada X

''Inserto al vector los valores de las coordenadas - ORDEN (a quien)
ordenCoor = valor.Split(",")
coorOrdenY = CInt(ordenCoor(0)) ''valor de la coordenada Y
coorOrdenX = CInt(ordenCoor(1)) ''valor de la coordenada X

''Inserto al vector los valores de las coordenadas - SUMA (vlr en letras)
sumaCoor = suma.Split(",")
coorSumaY = CInt(sumaCoor(0))
coorSumaX = CInt(sumaCoor(1))

''Inserto al vector los valores de las coordenadas - SUMA 1 (vlr en letras 1)
suma1Coor = suma.Split(",")
coorSuma1Y = CInt(suma1Coor(0))
coorSuma1X = CInt(suma1Coor(1))


e.Graphics.DrawString(VlrFecha, Font, Brushes.Black, coorFechaX, coorFechaY) ''Escribo en el cheque la fecha
e.Graphics.DrawString(VlrCheque, Font, Brushes.Black, coorValorX, coorValorY) ''Escribo en el cheque el valor
e.Graphics.DrawString(Aquien, Font, Brushes.Black, coorOrdenX, coorOrdenY) ''Escribo en el cheque a quien va

''valor a letras
Dim cUtilidad As New clsUtilidad
vlrLetras = VlrCheque

Dim aletras As New clsUtilidad
vlrLetras = aletras.Letras

If vlrLetras.Length >= 75 Then ''si el valor en letras es > 75 caracteres divido la cadena
vlrLetras1 = Mid(vlrLetras, 0, 75) ''los 75 primeros
vlrLetras2 = Mid(vlrLetras, 76, vlrLetras.Length) ''los siguientes

e.Graphics.DrawString(vlrLetras1, Font, Brushes.Black, coorSumaX, coorSumaY) ''Escribo en el cheque valor en letras
e.Graphics.DrawString(vlrLetras2, Font, Brushes.Black, coorSuma1X, coorSuma1Y) ''Escribo en el cheque valor en letras
Else
e.Graphics.DrawString(vlrLetras, Font, Brushes.Black, coorSumaX, coorSumaY) ''Escribo en el cheque valor en letras
End If


' No hay mas hojas por imprimir.
'El procedimiento no se vuelve a ejecutar
e.HasMorePages = False



Catch ex As System.Exception

Dim baserrores As New basErroresv100
baserrores.txtModulo.Text = Me.Name
baserrores.txtError.Text = "error imprimiendo cheque."
baserrores.txtDetalle.Text = ex.Message
baserrores.ShowDialog()
Me.Close()

End Try

End Sub


Luego en el evento del boton para imprimir hago:

msg = MsgBox("¿Desea imprimir el cheque?", MsgBoxStyle.YesNo, "Imprimir Cheque")
If msg = MsgBoxResult.Yes Then


Dim DlgImp As New PrintDialog
Dim rta As DialogResult

DlgImp.Document = docImprimir
rta = DlgImp.ShowDialog

If rta = Windows.Forms.DialogResult.OK Then
docImprimir.Print() '''''''problema aqui*
End If
End if



Tuve q declarar antes una variable tipo PrintDocument:
Private WithEvents docImprimir As New PrintDocument


Pero ahora el problema es otro.....como de servicios o algo asi. Cuando el programa va en la linea -docImprimir.Print() '''''''problema aqui*- aparece un error q dice "El servidor RPC no esta disponible"; aun estoy buscando la solucion para probar del todo la impresion del cheque. Pero en general creo esa seria la solucion....solo falta la prueba final!
me puedes decir como hallastes las coordenadas