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í:
Código Delphi
[-]
unit StrPrn;
interface
uses
Classes, DB, Dialogs, Variants;
const
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= ' ';
LineasPagina = 62;
LastDetalle = 54; type
TStrPrn = class (TStringList)
public
Asrc, Apath, TipoListado: string;
Linea, pagina, NoDoc, Unidades: integer;
Final, FinDetalle: boolean;
importe: Currency;
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.