Jump to content
Fórum Script Brasil
  • 0
Sign in to follow this  
Ricardo_PF

Justificar Texto

Question

Eu queria saber se alguém poderia me passar uma função para justificar um texto... a situação é a seguinte: o usuário digita o texto em um richedit e quando ele manda gerar o relatório o texto passará para o richtext (que não tem propriedade de justificar) já justificado... eu consegui uma função (fracassada) internet a fora... e também fiz uma que não está 100%...

Obrigado, Ricardo.

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 0

Progr'amador, eu tentei utilizar o código que me passou... mas o problema é que esse código aloca espaços em branco no final da linha... e as vezes não alinha algumas das linhas.. é como se ele ignorasse algumas linhas do richedit...

Share this post


Link to post
Share on other sites
  • 0

Olá Ricardo,

Isso só acontece se não obedecer esses dois requisitos, conforme postei lá:

- Usar fonte cujo os caracteres tenham o mesmo tamanho, como por exemplo a 'Courier New', 'Arial por exemplo não funciona legal';

- O tamanho do Memo (Width) deve ser compativel com o número de caracteres possiveis da linha (Length).

Abs. Progr'amador.

Share this post


Link to post
Share on other sites
  • 0

Bom.. a fonte q eu coloquei é courier new.. q possue o mesmo tamanho para qualquer caracter... o tamanho do memo e o length são "compatíveis"... mas mesmo assim não funcionou... de qualquer forma obrigado...

Share this post


Link to post
Share on other sites
  • 0

Impossivel não funcionar se tiver tudo correto, outras pessoas já testaram e funcionou... dry.gif

Se quizer posso te mandar um executavel ou ate mesmo o font pra você testar.

Abs. Progr'amador.

Share this post


Link to post
Share on other sites
  • 0

Me mande então faz favor... por que já tentei d tudo pra faze funciona e tentei montar funções diferentes e semelhantes...mas não obtive sucesso...

valeu...

Share this post


Link to post
Share on other sites
  • 0

Essa é uma versão simplificada para justificar texto em tela ou em impressão no Quick

Use essa função abaixo passando True para o windows entender que voce quer justificar texto, e false para justificar os paragrafos envolvidos no texto selecionado ou o parágrafo em que se encontra o cursor.

procedure JustificaRichEdit(RichEdit: TRichEdit; Aplicar: Boolean = False);

const

TO_ADVANCEDTYPOGRAPHY = $1;

EM_SETTYPOGRAPHYOPTIONS = (WM_USER + 202);

// EM_GETTYPOGRAPHYOPTIONS = (WM_USER + 203);

var

ParaFormat: TParaFormat;

begin // Danilo, 10/2010

SendMessage(RichEdit.handle, EM_SETTYPOGRAPHYOPTIONS,

TO_ADVANCEDTYPOGRAPHY, TO_ADVANCEDTYPOGRAPHY);

if Aplicar then

begin

ParaFormat.cbSize := SizeOf(ParaFormat);

ParaFormat.dwMask := PFM_ALIGNMENT;

ParaFormat.wAlignment := PFA_JUSTIFY;

SendMessage(RichEdit.handle, EM_SETPARAFORMAT, 0, LongInt(@ParaFormat));

end;

end;

Para justificar a impressão, crie o relatório num form comum, adicione TRichText e em seguida seu QReport.

No FormCreate adicione o código JustificaRichEdit(TRichText1);

No seu TQRRichText preencha a propriedade ParentRichEdit com o seu TRichText1.

No beforePrint da banda que está o seu TQRRichText adicione, adaptando para sua necessidade, o código abaixo:

procedure TfRLSpa0011.bDadosBeforePrint(Sender: TQRCustomBand;

var PrintBand: Boolean);

var

ssTemp: TStringStream;

x: Integer;

Tag, Corpo: String;

begin

Corpo := dmCMP.qry.FieldByName('texto').AsString;

for x := 0 to dmCMP.qry.FieldCount - 1 do

begin

Tag := '[*' + dmCMP.qry.Fields[x].FieldName + '*]';

if Pos(Tag, Corpo) > 0 then

Corpo := StringReplace(Corpo, Tag, Trim(dmCMP.qry.Fields[x].AsString), [rfIgnoreCase,rfReplaceAll]);

end;

ssTemp := TStringStream.Create(Corpo);

TRichText1.Lines.LoadFromStream(ssTemp); // Isso mesmo, você vai atribuir o texto na TRichText1. O seu TQRRichText se encarrega de buscar o texto no TRichText1 conforme o que você preencheu na propriedade ParentRichEdit.

FreeAndNil(ssTemp);

end;

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  



  • Forum Statistics

    • Total Topics
      148131
    • Total Posts
      643434
×
×
  • Create New...