Ir para conteúdo
Fórum Script Brasil
  • 0

Justificar campo quickreport


bali

Pergunta

1 resposta a esta questão

Posts Recomendados

  • 0

exemplo

JUSTIFICA TEXTO NO QUICK REPORT

Function TQuickReport2.justifica(s: string; iMax: integer): string;
var
iCont: integer;
iPos: integer;
sAux: string;
begin
// executa enquanto a string for maior que o comprimento da linha
while Length(s) > iMax do
begin
iPos := iMax;
// procura o espaço que será o final da linha
while s[iPos] <> ' ' do
iPos := iPos - 1;

// carrega a substring a ser justificada
sAux := copy(s, 0, iPos);
delete(s, 1, iPos);

iCont := iPos - 1;
// inclui espaços até a substring ter o tamanho máximo da linha
while iPos <> iMax do
begin
// posiciona o cursor para incluir o espaço
while sAux[iCont] <> ' ' do
begin
iCont := iCont - 1;
if iCont < 0 then
iCont := iPos - 1;
end;
Insert(' ', sAux, iCont);

// ajusta o cursor para que não sejam incluídos mais espaços na
// mesma posição de justificação
while (sAux[iCont] = ' ') and (iCont > 0) do
iCont := iCont - 1;

iPos := iPos + 1;
end;

Result := Result + sAux;
end;

Result := Result + s;
end;



Observação: Lembrar de deixar a propriedade Autosize como false e Autostretch com true do Label. O parametro " S " é o texto do Label e o " iMax " é a quantidade de caracteres de cada linha. a fonte tem que ser " Courier New ".

=======================================================================================

ou pode fazer uma adaptação desse código ( ao invés de usar um memo voce pode usar um qrmemo )

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, strutils;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

// USAR FONTE COURRIER - DICA MODIFICADA
// https://br.groups.yahoo.com/neo/groups/delphi-br/conversations/topics/97203

function Justificar(Texto:String; Tamanho : integer ):String;
var
Esq, Dir:String;
Begin
   Result := Texto;
   if Pos(#13, Result)<>0 Then Exit;
   if Pos(' ', Result)=0 Then Exit;
   if Length(Result)>=Tamanho Then Exit;
   While (Length(Result)<Tamanho) do
   Begin
       While (Length(Result)<Tamanho) and (Pos(' ',Result)<>0) do
       Begin
         Esq := LeftStr(Result, Pos(' ', Result)-1);
         Dir := RightStr(Result, Length(Result)-Pos(' ', Result));
         Result := Esq+#255+#255+Dir;
       End;
       While Pos(#255, Result)<>0 do Result[Pos(#255, Result)]:=' ';
   End;
End;

procedure TForm1.Button1Click(Sender: TObject);
var  i:Integer;
begin
   for i:=0 to Memo1.Lines.Count-1 do
      begin
         if i <> Memo1.Lines.Count-1 then
            Memo2.Lines.append(Justificar(Memo1.Lines.Strings[i], 80))
         else
            Memo2.Lines.append(Memo1.Lines.Strings[i]);
      end;
end;

end.

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...