PDA

Ver la Versión Completa : impresion directa a impresora


e_god
12-01-2005, 14:51:26
Buen dia, ¿alguien me puede ayudar, necesito enviar un texto directo a la impresora, sin generar el reporte por report builder?

Para imprimir formatos de correo en una impresora de agujas.


edgar :confused:

Coco
12-01-2005, 15:00:50
a ver si te sirve algo asi?


procedure TForm1.Button1Click(Sender: TObject);
var
t:TextFile;
i: integer;
begin
AssignPrn(t);
rewrite(t);
try
Printer.Canvas.Font:= Memo1.Font;
for i:= 0 to Memo1.Lines.Count-1 do
writeln(t,memo1.lines[i]);
finally
CloseFile(t);
end;
end;
Saludos

lento manu
12-01-2005, 20:14:43
Yo utilizo un ejemplo de Marco Cantu para generar listado HTML, solo q escribo texto ascii tal como lo interpreta la impresora tipo "Propinter". Se basa en una Unit derivada de TStingList, tal q así:

unit StrPrn;
interface
uses
Classes, DB, Dialogs, Variants;
const
//IBMpropinter
//estos caracteres deben verse con el editor Charset OEM-charset
Defecto = '';
Comprimir = '';
Super = '';
IniResaltar ='E';
FinResaltar = 'F';
RayaH = 'Ä';
RayaV = '³';
Cruce = 'Å';
CruceIda='´';
CruceDcha='Ã';
AnglIzdaSup= 'Ú';
AnglIzdaInf= 'À';
AnglDchaSup= '¿';
AnglDchaInf= 'Ù';
RDblH ='º';
RDblV = 'Í';
CruceDbl='Î';
SaltoPagina = ' ';
Aowner = 'PROPIETARIO, S.L. C.I.F.: ES-B-79774645';
noOwner= ' ';
//pagina
LineasPagina = 62;
LastDetalle = 54; //53
type
TStrPrn = class (TStringList)
public
//todas las q necesites:
Asrc, Apath, TipoListado: string;
Linea, pagina, NoDoc, Unidades: integer;
Final, FinDetalle: boolean;
importe: Currency;

//Generar los procedimientos q vayas a usar:
procedure Cabecera (nArray:integer; Sigla, Marca, Temporada: string; Sujeto, Data: TDataSet);
procedure DetailCabecera(Repre, Marca:string;DatSujeto: TDataset);
procedure Pics(nArray: integer; Data: TDataSet);
procedure Cerrar(const Nominal:string);
procedure Detalles (Data: TDataSet);
Procedure SubDetail(SubData: TDataset);
Procedure NewPage ;
Procedure SetPagina;
procedure Rellenar (lineas:integer);
private
aSigla: String[1];
Tabla: TDataSet;
procedure AddTableContents (Data: TDataSet);
end;
implementation
uses
SysUtils;....

Es muy útil, y el texto lo muestro antes en formato Oem. Pero ántes te lo has de currar bien el formato y todo eso. Para nviar a PRN (también guardar TXT) así:

Memo1.Lines.SaveToFile('lpt1:');

pero si no hay impresora LPT1 se produce un error aunque lo intentes capturar con un try ... except.
De este modo imprimes al modo dos con las letras por defecto de la PRN, es más rápido y los calcos son los de siempre.

Aquí en el foro, he visto otros métodos muy interesantes, por ejemplo en el componente Norma19. Este es método es ya un componente y genera un listado ascii igualmente. Al ser un componente, me parece más interesante, pero bastante más complejo de entender.

Si necesitas mas detalles, te puedo enviar al mail un pas completo.