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

Justificar Texto


Ricardo_PF

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 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...

Link para o comentário
Compartilhar em outros 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.

Link para o comentário
Compartilhar em outros 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;

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...