rogeriobeltran
04-08-2004, 18:51:48
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
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:
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
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
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:
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