El tema es impresión enmatrizd e punto me dijeron que hay que sacar algo gráfico de la imptresion cuando mando a imprimir
1 Respuesta
Respuesta de raulcorrea
1
1
raulcorrea, Programación en Visual Basic, Administrador en Sistemas de...
Haber... Este método es para imprimir en formato texto o ascii en la printer matriz de punto. El tamaño de la hoja no importa, ya que lo que imprime es un archivo de tipo txt que en puedes ver en DOS incluso con el edit. A lo mejor no entendí la pregunta disculpa, si no era esa. Pero esto imprime en cualquier tipo de hoja, solo tu debes dar las dimensiones. [email protected]
No, vos entendiste bien la pregunta yo me explique mal ¿Es en tiempo de ejecución o hay que entrar en el edit e imprimir? Lo de las dimensiones se las doy yo. Ok.
Es en tiempo de ejecución Al parecer el ejemplo no llego completo. Si quieres me envías tu email y te mando nuevamente el ejemplo, pero completo [email protected]
Yo trabajo con hojas grandes en formato continuo. 12 pulgadas x 38cm ¿Mandas a imprimir en tiempo de ejecución?
Matriz de punto Imprimir en un Puerto LPT1 es lo más simplícimo que existe (aya oye !) Requiere internet explorer 5 o superior Esta instrucción me dio resultado en el NT 4.0 así que hay que probarla en el XP, pero debe ser lo mismo. Solución Propuesta por Raúl Correa V. Al iniciar el programa (el primer formulario que aparece) pregunta si existe un archivo .BaT (por lotes) Que es el que imprime en el lpt1. Nota : en cada botón imprimir yo genero un archivo con el nombre de Temp.Tmp en el disco C: así me evito colisiones en la red, pero antes pregunto si existe, si es así, lo elimino y luego genero el archivo. Función que permite verificar si el archivo existe Function ArchivoExiste(EspecificaciondeArchivo as String) As Boolean 'verifica la existencia del archivo especificado Dim fso, Mensaje ArchivoExiste = True Set fso = CreateObject("Scripting.FileSystemObject") If Not (fso.FileExists(EspecificaciondeArchivo)) Then ArchivoExiste = False End If End Function En el primer formulario pregunto si el archivo bat existe, si no es así, el programa lo crea (es importante, eso sí, que en las propiedades el archivo bat, se especifique Cerrar al salir) Private Sub Form_Load() If Not ArchivoExiste("c:\imprime.bat") Then Open "c:\imprime.bat" For Append As #1 Print #1, "cd\" Print #1, "type c:\temp.tmp >prn" Close #1 End If End Sub Una vez listo esto, generamos el archivo. Ejemplo de Botón Imprimir. Dim Dos as Variant Private Sub BtnImprimir_Click() Me.MousePointer = 11 Kill ("c:\temp.tmp") ?elimna el archivo TEMP.TMP Open "c:\temp.tmp" For Append As #1 ?apertura del archivo para escribir PAG = 0 Call Cabecera ?formato de la cabecera With InformeGrid For A = 1 To InformeGrid.Rows - 1 columna1 = EspacioDespues(.TextMatrix(A, 0), 11) ?imprime una columna columna2 = EspacioAntes(.TextMatrix(A, 1), 6) columna3 = EspacioDespues(.TextMatrix(A, 2), 30) columna4 = EspacioDespues(.TextMatrix(A, 3), 7) columna5 = EspacioAntes(Format(.TextMatrix(A, 6), "#,#0.#0"), 14) Print #1, " " & columna1 & " " & columna2 & " " & columna3 & " " & columna4 & " " & columna5 Fila = Fila + 1 ?cuenta las linea impresas If Fila >= 62 Then ?si llega al final de la hoja For b = Fila To 65 ?imprime lineas en blanco para el salto de pagina Print #1, "" Next b Fila = 0 ?vuelve la fila a 0 por ser una nueva pagina Call Cabecera End If Next A End If End With If Fila <= 60 Then ?termina de imprimir hace un salto de hoja For b = Fila To 65 ?hoja tamaño carta tiene 65 lineas Print #1, "" Next b End If Close #1 ?cierra la escritura del archivo Dos = Shell("c:\imprime.bat", vbMinimizedNoFocus) ?ejecuta la instrucción imprime.bat Me.MousePointer = 0 End Sub Función que genera columnas utilizando espacios Function EspacioAntes(Detalle As String, Largo As Integer) As String largoanterior = Len(Detalle) If largoanterior > Largo Then Detalle = Mid(Detalle, 1, Largo) Largoante