Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   Imprimir columnas a la misma distancia (https://www.clubdelphi.com/foros/showthread.php?t=12673)

ctronx 23-07-2004 17:46:58

Imprimir columnas a la misma distancia
 
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:
Código Delphi [-]
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!


La franja horaria es GMT +2. Ahora son las 22:56:18.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi