bali Postado Novembro 15, 2014 Denunciar Share Postado Novembro 15, 2014 Não estou conseguindo fazer um qrmemo fique justificado no qreport. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Novembro 15, 2014 Denunciar Share Postado Novembro 15, 2014 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
bali
Não estou conseguindo fazer um qrmemo fique justificado no qreport.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
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.