Hola Esteban.
Yo te sugerí lo del DBGrid a fin de mostrarlo en pantalla, pero para armar los renglones perfectamente podés usar TStrings en lugar del Memo. De ese modo lo trabajas como texto y no tenés los problemas de ajuste como en pantalla.
Es decir, mostras en pantalla con el DBGrid pero internamente mandás los datos a la impresora fiscal mediante el Tstrings.
Como ejemplo, reemplazá al Memo en cualquiera de los códigos que te haya funcionado por:
Código Delphi
[-]
...
var
TS: TStrings;
begin
TS:= TStringList.Create;
try
....
Query1Cantidad.AsString:= Query1Cantidad.AsString + StringOfChar(' ',6-Length(Query1Cantidad.AsString));
Query1Articulo.AsString:= Query1Articulo.AsString + StringOfChar(' ',40-Length(Query1Articulo.AsString));
Query1Precio.AsString:= Query1Precio.AsString + StringOfChar(' ',15-Length(Query1Precio.AsString));
...
Ts.Add(Query1Cantidad.AsString+Query1Articulo.AsString+Query1Precio.AsString);
...
finally
TS.Free;
end;
end;
(Quizá encuentres algún error, no tengo Delphi en este equipo )
Saludos.