A partir do RichEdit 3.0 é possível justificar parágrafo/texto em um RichEdit.
Entretanto, no componente TRichEdit (ao menos até a versão 7), não há esta opção de alinhamento (apenas, taLeftJustify, taRightJustify e taCenter). Logo, temos que fazer uso de chamadas à API do Windows para que consigamos esta formatação.
Um outro recurso que pode ser aproveitado por quem utilizar TRichEdit em pequenos editores de texto é a variação do entre-linhas.
Abaixo, seguem duas funções para estes recursos mencionados:
// AllText : True=todo o texto; False=parágrafo atual
procedure JustifyRichEdit(RichEdit :TRichEdit; AllText :Boolean);
const
TO_ADVANCEDTYPOGRAPHY = $1;
EM_SETTYPOGRAPHYOPTIONS = (WM_USER + 202);
EM_GETTYPOGRAPHYOPTIONS = (WM_USER + 203);
var
ParaFormat :TParaFormat;
SelStart,
SelLength :Integer;
begin
ParaFormat.cbSize := SizeOf(ParaFormat);
if SendMessage(RichEdit.handle,
EM_SETTYPOGRAPHYOPTIONS,
TO_ADVANCEDTYPOGRAPHY,
TO_ADVANCEDTYPOGRAPHY) = 1 then
begin
SelStart := RichEdit.SelStart;
SelLength := RichEdit.SelLength;
if AllText then
RichEdit.SelectAll;
ParaFormat.dwMask := PFM_ALIGNMENT;
ParaFormat.wAlignment := PFA_JUSTIFY;
SendMessage(RichEdit.handle, EM_SETPARAFORMAT, 0, LongInt(@ParaFormat));
// Restaura seleção caso tenhamos mudado para All
RichEdit.SelStart := SelStart;
RichEdit.SelLength := SelLength;
end;
end;
// Espaçamento: 0=simples; 1=1,5; 2=duplo
procedure LineSpaceRichEdit(RichEdit :TRichEdit; Espacamento :Integer; AllText :Boolean);
var
ParaFormat :TParaFormat2;
begin
if AllText then
RichEdit.SelectAll;
ParaFormat.cbSize := SizeOf(ParaFormat);
ParaFormat.dwMask := PFM_LINESPACING or PFM_SPACEAFTER;
ParaFormat.dyLineSpacing := Espacamento;
ParaFormat.bLineSpacingRule := Espacamento;
SendMessage(RichEdit.handle, EM_SETPARAFORMAT, 0, LongInt(@ParaFormat));
// Restaura seleção caso tenhamos mudado para All
RichEdit.SelStart := SelStart;
RichEdit.SelLength := SelLength;
end;
Para usá-las, você possui 2 alternativas:
1) Todo o texto:
JustifyRichEdit(RichEdit1, True); // justifica todo o texto
LineSpaceRichEdit(RichEdit1, 2, True); // espaçamento duplo em todo o texto
Pergunta
Micheus
A partir do RichEdit 3.0 é possível justificar parágrafo/texto em um RichEdit.
Entretanto, no componente TRichEdit (ao menos até a versão 7), não há esta opção de alinhamento (apenas, taLeftJustify, taRightJustify e taCenter). Logo, temos que fazer uso de chamadas à API do Windows para que consigamos esta formatação.
Um outro recurso que pode ser aproveitado por quem utilizar TRichEdit em pequenos editores de texto é a variação do entre-linhas.
Abaixo, seguem duas funções para estes recursos mencionados:
Para usá-las, você possui 2 alternativas:
1) Todo o texto:
JustifyRichEdit(RichEdit1, True); // justifica todo o texto
LineSpaceRichEdit(RichEdit1, 2, True); // espaçamento duplo em todo o texto
2) Parâgrafo atual ou selecionado(s):
JustifyRichEdit(RichEdit1, False); // justifica parágrafo(s)
LineSpaceRichEdit(RichEdit1, 1, False); // espaçamento 1,5 no(s) paragrafo(s)
Obs: É necessário declarar a unit RichEdit na cláusula uses do seu form.
Espero que sejam úteis.
Abraços
______________
Ref. msdn: About Rich Edit Controls
Link para o comentário
Compartilhar em outros sites
4 respostass 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.