Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-08-2004
rogeriobeltran rogeriobeltran is offline
Miembro
 
Registrado: dic 2003
Ubicación: Bucaramanga-Santander-Colombia
Posts: 49
Poder: 0
rogeriobeltran Va por buen camino
Unhappy Dudas con Impresion Directa a Puerto

Hola:

Bueno mi inconveniente es que tengo que imprimir a puerto COM1 un recibo de parqueadero en donde coloco el nombre del parqueadero, el NIT, Direccion, Telefono, Tipo y Placa del Vehiculo y el Valor del Parqueo por hora, además debo adicionar las clausulas del parqueo, estas clausulas esta guardadas en un memo. He probado con Canvas y con Writeln pero estas no me imprimen los valores del memo la forma con writeln es la siguiente
Código:
AssignFile(F,'COM1');
Rewrite(F);

Writeln(F,tEmpresa.FieldByName('NOMBRE').AsString);
Writeln(F,tEmpresa.FieldByName('NIT').AsString);
Writeln(F,tEmpresa.FieldByName('DIRECCION').AsString);
Writeln(F,tEmpresa.FieldByName('TELEFONO').AsString);
Writeln(F,'Tipo: '+TipoVehiculo+' Placa : '+Placa);
Writeln(F,'Entrada : '+FormatDateTime('dd/mm/yyyy hh:mm:ss',tRegistro.FieldByName('FECHAENTRADA').AsDateTime));
Writeln(F,'CLAUSULAS');
tEncabezado.Close;
tEncabezado.Filtered := False;
tEncabezado.Filter := 'CODIGO = ''00''';
tEncabezado.Filtered := True;
tEncabezado.Open;
For i:=0 to DBMemo2.Lines.Count-1 do
   begin
      Cadena := DBMemo1.Lines[i];
      Writeln(F,Cadena);
   end;
CloseFile(F);
y con canvas es:

Código:
 SetMapMode(Printer.Handle,MM_LOMETRIC);
 Printer.BeginDoc; // INICIO UN NUEVO DOCUMENTO
 With Printer.canvas do
  Begin
   Font.Size := 8; //TAMAÑO DE LA LETRA
   Font.Name := 'Courier New';

   Longitud := Length(tEmpresa.FieldByName('NOMBRE').AsString);
   Centro := (600-Longitud) div 2;

   TextOut(10,10,tEmpresa.FieldByName('NOMBRE').AsString);

   Longitud := Length(tEmpresa.FieldByName('NIT').AsString);
   Centro := (600-Longitud) div 2;
   TextOut(10,110,tEmpresa.FieldByName('NIT').AsString);

   Longitud := Length(tEmpresa.FieldByName('DIRECCION').AsString);
   Centro := (600-Longitud) div 2;
   TextOut(10,210,tEmpresa.FieldByName('DIRECCION').AsString);

   Longitud := Length(tEmpresa.FieldByName('TELEFONO').AsString);
   Centro := (600-Longitud) div 2;
   TextOut(10,310,tEmpresa.FieldByName('TELEFONO').AsString);

   TextOut(10,410,'Tipo: '+TipoVehiculo+' Placa : '+Placa);
   TextOut(10,510,'Entrada : '+FormatDateTime('dd/mm/yyyy hh:mm:ss',tRegistro.FieldByName('FECHAENTRADA').AsDateTime));
   TextOut(10,610,'CLAUSULAS');

   For i:=0 to DBMemo2.Lines.Count-1 do
   begin
      Cadena := DBMemo1.Lines[i];
      TextOut(10,10+(I*100),CADENA);
   end;

  end;
  Printer.EndDoc;

Sinceramente esta es la primera vez que trabajo imprimiendo a puerto la impresora que utilizo es una UNISYS EF4272 esta instalada como generica de texto, Trabajo con Delphi 5 e Interbase, el sistema operatvo es windows2000 y win98. Ademas con canvas no se como utilizar correctamente el TextOut(X,Y,Texto), puesto si me paso de 600 en Y me imprimi en la primera linea.

Muchas gracias por su colaboración.

Rogerio
Responder Con Cita
  #2  
Antiguo 04-08-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
Cita:
For i:=0 to DBMemo2.Lines.Count-1 do
begin
Cadena := DBMemo1.Lines[i];
Writeln(F,Cadena);
end;
ojo a eso. ¿tienes enlazado el DBMemo a tEncabezado? ese filtro: 'CODIGO = ''00'''; ¿seguro que hace lo que tu quieres? ¿no te dejará el conjunto de datos vacio?
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #3  
Antiguo 04-08-2004
rogeriobeltran rogeriobeltran is offline
Miembro
 
Registrado: dic 2003
Ubicación: Bucaramanga-Santander-Colombia
Posts: 49
Poder: 0
rogeriobeltran Va por buen camino
Dudas con Impresion

Hola:

Gracias por tu respuesta si la tabla encabezado esta filtrado por '00' y el registro tiene datos al momento de realizar el trazeo me dice que tiene 33 lineas, y deseo ir insertando linea por linea y no lo realizaba. TIENES TODA LA RAZON, me habia equipo en el DBMemo. Ahora si lo esta realizando. Era ese error tan tonto y no me habia dado cuenta.

Gracias

Orlando
Responder Con Cita
  #4  
Antiguo 04-08-2004
rogeriobeltran rogeriobeltran is offline
Miembro
 
Registrado: dic 2003
Ubicación: Bucaramanga-Santander-Colombia
Posts: 49
Poder: 0
rogeriobeltran Va por buen camino
Dudas con Impresion con Canvas

Ya solucionado el problema con Writeln, quisiera saber si se puede cambiar el tipo de letra.

Estoy realizando pruebas con Canvas y me sucede que no me imprime el encabezado, pareciera que me lo imprimiera sobre el mismi sitio, de la factura sino solamente las clausulas. Además no me cambia el tipo de letra siempre me imprime el mismo. No se si se puedea cambiar con writeln, ya que con el si se me imprime bien pero no se si se puede cambiar el tipo y tamaño de la letra.

Código:
 

 SetMapMode(Printer.Handle,MM_LOMETRIC);
 Printer.BeginDoc; // INICIO UN NUEVO DOCUMENTO
 With Printer.canvas do
  Begin
   Ancho := 600;
   Font.Size := 8; //TAMAÑO DE LA LETRA
   Font.Name := 'Courier New';


   TextOut(30,10,tEmpresa.FieldByName('NOMBRE').AsString);

   Longitud := Length(tEmpresa.FieldByName('NIT').AsString);
   Centro := (Ancho-Longitud) div 2;
   TextOut(CENTRO,90,tEmpresa.FieldByName('NIT').AsString);

   Longitud := Length(tEmpresa.FieldByName('DIRECCION').AsString);
   Centro := (Ancho-Longitud) div 2;
   TextOut(CENTRO,170,tEmpresa.FieldByName('DIRECCION').AsString);

   Longitud := Length(tEmpresa.FieldByName('TELEFONO').AsString);
   Centro := (Ancho-Longitud) div 2;
   TextOut(CENTRO,260,tEmpresa.FieldByName('TELEFONO').AsString);

   TextOut(10,350,'Tipo: '+TipoVehiculo+' Placa : '+Placa);
   TextOut(10,440,'Entrada : '+FormatDateTime('dd/mm/yyyy hh:mm:ss',tRegistro.FieldByName('FECHAENTRADA').AsDateTime));

   Longitud := Length('CLAUSULAS');
   Centro := (Ancho-Longitud) div 2;
   TextOut(CENTRO,550,'CLAUSULAS');

   tEncabezado.Close;
   tEncabezado.Filtered := False;
   tEncabezado.Filter := 'CODIGO = ''00''';
   tEncabezado.Filtered := True;
   tEncabezado.Open;
   Lineas :=0;
   Font.Size := 5; //TAMAÑO DE LA LETRA
   Font.Name := 'Small Fonts';
   For i:=0 to DBMemo2.Lines.Count-1 do
   begin
      Cadena := DBMemo2.Lines[i];
      TextOut(10,10+(I*80),Cadena);
   end;

  end;
  Printer.EndDoc;
Gracias

Rogerio
Responder Con Cita
  #5  
Antiguo 05-08-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
los tipos de letras con las impresoras de tickets son un coñazo, mas que nada por que cada funciona como le da la gana.

Si lo haces con canvas necesitaras tener el driver especifico de esa impresora de tickets instalado y leer el manual a ver qué tipos de fuentes puede sacar.

Si lo haces con impresión directa (este es mi método preferido) deberas conocer los caracteres de control para el cambio de tipo de letra (como por ejemplo mandar un #10#19) que tambien vendran en el manual.
Me gusta mas el segundo método porque por lo general están mejor documentados y estos caracteres de control suelen ser compatibles entre los distintos modelos de impresoras de la misma casa.
la compatibilidad entre distintos modelos a puedes implementar mediante una plantilla de texto y un pagueproducer, escribi hace poco en otro post al respecto
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #6  
Antiguo 05-08-2004
rogeriobeltran rogeriobeltran is offline
Miembro
 
Registrado: dic 2003
Ubicación: Bucaramanga-Santander-Colombia
Posts: 49
Poder: 0
rogeriobeltran Va por buen camino
Dudas con Witeln

Gracias por los consejos.

Realmente es la primera vez que utilizo esta forma de impresión y por eso es que tengo tantas dudas, cuando me dices que utilices caracteres especiales para definir la impresion es agregandoselos al momento de escritura los comando y dejandolos como una sarta. Si puedieras regalarme un ejemplo de te lo agradeceria aun mas. La impresora en cuestión es una UNISYS EF4272 y no tiene manuales y los estoy buscando para poder configurar los caracteres especiales, ademas esta instalada como impresora de solo texto, puesto que los drivers no lo consigo y no los tiene el usuario.

Gracias nuevamente

Rogerio.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:25:30.


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