Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   impresion de ticket, canvas o assingfile LPT? (https://www.clubdelphi.com/foros/showthread.php?t=66463)

erickperez6 21-02-2010 20:22:59

impresion de ticket, canvas o assingfile LPT?
 
necesito imprimir ticket de punto de ventas en impresoras de papel muy ajutado tamano (76mm de ancho creo) y de modo continuo (el alto de la hoja depende de la cantidad de lineas a imprimirse por cada ticket, las cuales nunca sera un numero fijo establecido). Los modelos de la impresora puede varias por clientes, es decir que la impresion del ticket no debe de dar inconvenientes al cambiar de modelos de impresoras. He buscado en los hilos anteriores del foro y por lo que observo lo mas recomendable es imprimir directamente en el impresor por medio de canvas o con el assignfile indicandole en que puerto deseo imprimir. Veo que algunas personas utilizan los dos metodos a la vez (no se porque lo hacen) y otras una de las dos.

Mi pregunta es, cual es la diferencia significativa de un medoto y el otro, cual se le puede sacar mas ventaja?

gracias de antemano

heroe 21-02-2010 21:39:53

Prefiero LPT
 
En lo personal uso LPT, me da excelentes resultados.

un ejemplo

Código Delphi [-]
var
  Archivo: TextFile;
begin
  AssignFile(Archivo, 'LPT3');
  Rewrite(Archivo);
  Writeln(Archivo, 'Esto es una prueba');
  CloseFile(Archivo);
end.

Nota: Las computadoras modernas ya no traen los puertos paralelo ni serial.
Así debes compralos por aparte e instalarlos. Si es así, usa el puerto LPT3.

Neftali [Germán.Estévez] 22-02-2010 11:52:20

¿Has probado a utilizar un Richedit (PlainText=True) para la impresión?

Lo digo porque este componente posee el método de Print. Bastaría con volcar el texto sobre el componente, teniendo en cuenta que no sobrepase el ancho de tu ticket y lanzar la impresión.

Casimiro Noteví 22-02-2010 12:26:59

Lo de usar el RichEdit lo hago muy a menudo, es cómodo y no hay que preocuparse de canvas, puertos, etc.

erickperez6 22-02-2010 14:43:16

me agrada mucho la idea del richedit, es mas practico, pero me surge la duda de que si deseo en algun momento determinado enviarle secuencias de escape al richedit para lograr que el impresor realice ciertas operaciones especiales (como activar negritas y otros) si lo podre hacer.

Neftali [Germán.Estévez] 22-02-2010 16:13:00

Cita:

Empezado por erickperez6 (Mensaje 354642)
me agrada mucho la idea del richedit, es mas practico, pero me surge la duda de que si deseo en algun momento determinado enviarle secuencias de escape al richedit para lograr que el impresor realice ciertas operaciones especiales (como activar negritas y otros) si lo podre hacer.

No se si podrás mezclar ambas cosas y tampoco sé si te hará falta.
¿Si necesitas negritas, porqué no las añades al RichEdit?

erickahr 03-03-2010 22:02:41

Cita:

Empezado por Neftali (Mensaje 354648)
No se si podrás mezclar ambas cosas y tampoco sé si te hará falta.
¿Si necesitas negritas, porqué no las añades al RichEdit?

Neftalí, estoy tratando de hacer lo mismo que el tocayo (la persona que inicio el hilo se llama erick y yo tambien), el hecho de volcar el ticket sobre el RichEdit quiero que sea transparente al usuario, por lo tanto necesito dar formato desde codigo, como puedo aplicar estilos desde codigo, y otra duda, con este metodo puedo imprimir desde red, compartiendo la impresora?, gracias de antemano SALUDOS!!!.

Neftali [Germán.Estévez] 04-03-2010 11:59:03

Cita:

Empezado por erickahr (Mensaje 355501)
...el hecho de volcar el ticket sobre el RichEdit quiero que sea transparente al usuario, por lo tanto necesito dar formato desde codigo, como puedo aplicar estilos desde codigo...


Si revisas la ayuda del RichEdit hay varios ejemplos.
Te puedo mostrar algun trozo de código que tengo por aquí para que veas por donde van los tiros:

Código Delphi [-]
    // Color del texto seleccionado
    with reDocumentacion.SelAttributes do begin
      CurrText.Color := ColorDialog.Color;
    end;

  // Numeración
  with reDocumentacion.Paragraph do begin
    // No activada ?
    if (Numbering = nsNone) then begin
      Numbering := nsBullet;
    end
    else begin
      Numbering := nsNone;
    end;
    tbBullets.Down := Boolean(Ord(Numbering));
  end;

  // Alineación
  with reDocumentacion.Paragraph do begin
    // No activada ?
    if (Alignment <> taCenter) then begin
      Alignment := taCenter;
    end;
    tbLeft.Down := (Alignment = taCenter);
  end;

También te puede servir de mucha ayuda la demo que viene con Delphi de un editor de texto que trabaja con RichEdit. Puede ver ahí el código necesario para modificar estilos, coloración, fuentes,...


Cita:

Empezado por erickahr (Mensaje 355501)
...con este metodo puedo imprimir desde red, compartiendo la impresora?

No debería existir problema si tienes acceso a la impresora. El hecho de que sea local o compartida en red, debería ser transparente para el programa.

Softweb 04-03-2010 14:35:22

Hola a todos.

Perdonar pero estoy leyendo mucho en vuestras respuestas lo de imprimir en una impresora de tikes con el richedit, que yo sepa en la actualidad el 90% de estas son matriciales y térmicas comandadas por codes o lo que es lo mismo por códigos de los caracteres a imprimir.

Para lo cual o usas un control especifico que tenga en cuenta el tipo de letra, tamaño, ancho de los caracteres y color, o lo haces a pelo abriendo el puerto.

Saludos

erickahr 04-03-2010 16:22:17

Gracias Neftalí
 
Muchisimas gracias por tu respuesta, creeme que me sirvio de mucho, y estoy poniendo en practica el codigo que muestras, ademas de checar las demo, ya probe la impresion en red y funciona sin problemas, una vez mas Gracias!!!


Cita:

Empezado por Softweb (Mensaje 355594)
Hola a todos.

Para lo cual o usas un control especifico que tenga en cuenta el tipo de letra, tamaño, ancho de los caracteres y color, o lo haces a pelo abriendo el puerto.

Saludos

Si, tengo impresoras termicas, y asi lo manejo, mediante LPT1 y codigos de escape, pero al tener mas de una terminal en una sucursal me da problemas, porque tengo que usar un multiplexor (para dos computadoras a una sola impresora) y si son mas maquinas, simplemente no puedo imprimir.

Imprimiendo desde un RichEdit, funciona como cualquier impresora de Windows, y no te casas con una marca en especifico (ya que en algunos casos los codigos de escape varian en base a modelos y marcas), ni con un puerto, (ya que es un poco dificil encontrar el LPT en las maquinas recientes), pero tu observacion es muy util para alguin que se encuentre con problemas similares y entre aki.

Gracias!!!


La franja horaria es GMT +2. Ahora son las 06:22:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi