Bueno, lo primero, quería decir que el método que puse lo copié de alguna parte, no recuerdo de donde, el caso es que me funcionó cuando lo copié. Pero eso fue hace años, y ya no recordaba muy bien como era. Lo siento.
El caso es que ese fue de cuando era un muy novato. Ahora que lo soy menos, me he dedicado a ojear un poco el código. Lo que hace es tomar la impresora como la salida de un fichero de texto. En la ayuda de Delphi del método AssignPrn está bien explicado. Seguramente el fallo estaba al utilizar también el objetro Printer (BeginDoc, EndDoc...).
Bueno, aquí van unas líneas sencillas y comentadas, que no deberían fallar:
Código Delphi
[-]
uses Printers;
procedure TfrmMain.mImprimirClick(Sender: TObject);
var
Impresona: TextFile;
n: integer;
begin
AssignPrn(Impresora); Rewrite(Impresora); for n:=0 to ListBox1.Items.Count -1 do WriteLn(Impresora, ListBox.Items[n]); CloseFile(Impresora); end;
Espero haber sido claro, y que funcione.
Saludos.