Função para alinhar texto a direita, esquerda e centralizado

Esta função foi bolada por min para alinhar textos de relatorios a serem enviados a ECF no meu PAF-ECF,
usem a vontade.

type
    TAlinha = (alDIREITA, alCENTRALIZA, alESQUERDA);
    public
          function TextoAlinha(Alinha: TAlinha; tamTexto : integer; 
                    Texto : String; TextoPrePos : string = '' ; Caracter : Char = ' '): String;
end;

function TextoAlinha(Alinha: TAlinha; tamTexto : integer; Texto : String; TextoPrePos : string; Caracter : Char): String;
var
  I, Tamanho : integer;
    function Espaco(Qtde: integer; Caracter : Char = ' ') : String;
    var
      iConta : integer;
    begin
         Result := '';
         For iConta := 1 To Qtde Do
           Result := Result + Caracter;
    end;
begin
    try
//  textoPRE      texto      textoPOS
      Tamanho := TamTexto;
      case Alinha of
         alDIREITA :
           begin
               if (Length(TextoPrePos) + Length(Texto)) >= tamTexto then
                 texto := copy(Texto,1,TamTexto);
               TamTexto := (TamTexto - Length(TextoPrePos) - Length(Texto));
               Result   := TextoPrePos + Espaco(TamTexto, Caracter) + Texto;
           end;
         alCENTRALIZA :
           begin
              if Length(Texto) >= TamTexto then
                texto := copy(Texto,1,TamTexto);
              TamTexto := Trunc((TamTexto - Length(Texto)) /2);
              Result   := Espaco(TamTexto, Caracter) + Texto + Espaco(TamTexto, Caracter);
           end;
         alESQUERDA :
           begin
              if Length(Texto) >= TamTexto then
                texto := copy(Texto,1,TamTexto);
              TamTexto := (TamTexto - Length(Texto) - Length(TextoPrePos));
              Result   := Texto + Espaco(TamTexto, Caracter) + TextoPrePos;
           end;
      end;

    if (Tamanho - Length(Result)) >= 0 then
      Result := Result + Espaco(Tamanho - Length(Result));

    except
        case Alinha of
          alDIREITA    : raise Exception.Create('Não foi possivel alinhar a direita o texto para impressão.');
          alCENTRALIZA : raise Exception.Create('Não foi possivel centralizar o texto para impressão.');
          alESQUERDA   : raise Exception.Create('Não foi possivel alinhar a esquerda o texto para impressão.');
        end;
    end;
end;


Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s