Autor Tema: Centrar texto con objeto printer para un ticket  (Leído 3931 veces)

0 Usuarios y 1 Visitante están viendo este tema.

zxs23

  • Megabyte
  • ***
  • Mensajes: 146
  • Reputación: +5/-2
    • Ver Perfil
Centrar texto con objeto printer para un ticket
« en: Abril 13, 2017, 11:14:53 pm »
Como estan estoy utilizando centimetros imprimiendo en un ticket de 8cm y no puedo centrar el texto ya que siempre toma como medida una hoja A4, es decir no se como decirle que mi ancho de hoja sera de 8cm o en todo programar los calculos para q imprima, ya me enrede jaja espero me entiendan

NEBIRE

  • Kilobyte
  • **
  • Mensajes: 57
  • Reputación: +7/-1
    • Ver Perfil
Re:Centrar texto con objeto printer para un ticket
« Respuesta #1 en: Abril 16, 2017, 11:18:13 pm »
Citar
no se como decirle que mi ancho de hoja sera de
Pués cambia el papel... así se le indica el tamaño del papel (hay unas constantes predefinidas)

Código: (VB) [Seleccionar]
    Dim pr As Printer
   
    Set pr = VB.Global.Printer ' impresora por defecto...
    MsgBox pr.PaperSize ' comprueba que tamaño de papel tiene
    pr.PaperSize = 1 ' Este es el valor para 8.5", pero no 8cm (no sé si realmente querías poner 8cm, u 8pulgadas. 
    MsgBox pr.PaperSize ' verifica que el cambio fue aceptado...

Si al final realmente quires que sean 8 cm de ancho, entonces deberás definir el valor 256 (definido por el usuario).
Código: (VB) [Seleccionar]
    Dim pr As Printer
 
    Set pr = VB.Global.Printer ' impresora por defecto...
    with pr
        MsgBox .PaperSize ' comprueba que tamaño de papel tiene
       
        .PaperSize = 256 ' Este es el valor para indicarle un tamaño definido por el usuario. 
        '   esto fuerza a que tengas que definir las medidas que tiene el papel, estableciendo el ancho y alto para el objeto printer.
        .width = .scaleX(800, vbmillimeter, .scalemode) ' depende de qué scalemode tengas puesto en la impresora, puedes o no pasar el valor directamente o a ScaleWidth, etc... si no te aclaras deberás probar. Este modo lo soluciona más fácilmente, lo recomendado es que para la impresora tengas el scalemode al valor 5 (vbInches).
        .Height = .scaleY(???, vbmillimeter, .scalemode)
       
        MsgBox .PaperSize
    end with
« última modificación: Abril 16, 2017, 11:21:59 pm por NEBIRE »

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Centrar texto con objeto printer para un ticket
« Respuesta #2 en: Abril 18, 2017, 05:33:26 pm »
Hola hace mucho que no programo, pero aca mi aporte.

Código: (VB) [Seleccionar]
Private Sub Command1_Click()
   
    StrTitulo = "SERVICAR CENTRO AUTOMOTIVO"
    strSubTitulo = "CONCEPCION PARAGUAY"
   
    'La forma mas rapida es compartir la impresora en RED y ponerle un nombre facil yo le puse TICKET, mi maquina como nombre de equipo tiene CENTRAL
    'Asi no importa si la impresora que conexion tenga si es a USB o LPT1
   
    Open Trim("\\CENTRAL\TICKET") For Output As #1     'Este es para poder imprimir en una impresora que esta en RED, o
    'Open Trim("C:\archivo.txt") For Output As #1       'Este para imprimir en un archivo.
    'Open Trim("LPT1") For Output As #1                 'Este para imprimir en un impresora paralelo tienes que saber en que puerto se instalo.
   
    Print #1,

    Print #1, Tab(1); String(40, "=")                   'El numero 40 es por que en la ticketeadora que uso imprime 40 letras por fila contando espacios.
       
    Print #1, Tab((40 - Len(StrTitulo)) \ 2); StrTitulo
    Print #1, Tab((40 - Len(strSubTitulo)) \ 2); strSubTitulo
   
    Print #1, Tab(1); String(40, "=")
   
End Sub
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo