PDA

Ver la Versión Completa : Imprimir columnas a la misma distancia


ctronx
23-07-2004, 17:46:58
saludos, utilizo la asignacion a un archivo y el writeln para imprimir directamente al puerto pero tengo el problema que cuanto mando varios campos a manera de listado en columnas como no todas tienen el mismo ancho la impresion aparace sigzageante y las columnas no aparacen derechas. ¿ hay alguna manera de darle una medida de impresion o una medida de tabulador o cualquier cosa que me permita sacar mi impresion con las columnas rectas.:confused:

muchas gracias por la ayuda que puedan darme.

delphi.com.ar
23-07-2004, 18:42:20
Si puedes hacerlo, recuerda que cuando imprimes directamente en el puerto, es como sie estuvieras armando un archivo de texto, y puedes utilizar cualquier función de strings para hacerlo. Podrías armarte algunas funciones del tipo LPad o RPad y definirle un ancho estricto a cada columna.

Yo tengo armadas estas funciones sobrecargadas:

function LPad(Value: string; Key: Char = ' '; ALenght: Integer = 0): string;
var
iLen: Integer;
begin
iLen := Length(Value);

if (iLen > ALenght) then
Result := Copy(Value, 1, ALenght)
else
Result := StringOfChar(Key, ALenght-iLen) + Value;
end;

function LPad(Value: Integer; Key: Char = '0'; ALenght: Integer = 0): string;
begin
Result := LPad(IntToStr(Value), Key, ALenght);
end;

function RPad(Value: string; Key: Char = ' '; ALenght: Integer = 0): string;
var
iLen: integer;
begin
iLen := Length(Value);

if (iLen > ALenght) then
Result := Copy(Value, 1, ALenght)
else
Result := Value + StringOfChar(Key, ALenght-iLen);
end;

function RPad(Value: integer; Key: Char = '0'; ALenght: Integer = 0): string;
begin
Result := RPad(IntToStr(Value), Key, ALenght);
end;


Saludos!

ctronx
24-07-2004, 02:12:08
saludos, probe tus funciones y me funcionan a medias para mis necesidades, no se como arreglar mi problema, resulta que funcionan bien siempre y cuando se utilice con un tipo de letra monoespaciado (que todas las letras y/o numeros tengan el mismo ancho) tanto para imprimir a puerto como para mandar a un control memo y que salgan mis columnas.:confused:

¿Tendre alguna manera de corregir esto?
Si no encuentro nada creo que tendre que ocupar fuentes monoespaciadas.
Gracias por la ayuda que puedan darme.

delphi.com.ar
26-07-2004, 02:16:58
Cuando imprimes directamente en el puerto, si no le configuras ninguna fuente particular, todas las letras tienen el mismo ancho, para mostrarlo en pantalla puedes utilizar alguna fuente como Courier New.

Saludos!