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

Formatação Automatica No Richedit


D4n1l0d

Pergunta

Ola!

Tp, eu tava tentando fazer um richedit funcionar igual a area de texto das units, que quando eu digito var ela fica automaticamente em negrito, eu tentei mas esta dando alguns erros, como eu faço isso?? existe algum componente que faça isso para mim??

abaixo o codigo que usei ( coloquei no OnChange do richedit ( nome: richedit1 ));

procedure TForm1.RichEdit1Change(Sender: TObject);
var
a,z,v : integer;
x : string;
begin
for a := 0 to richedit1.Lines.Count -1 do
begin
if pos('var',richedit1.Lines.ValueFromIndex[a]) <> 0 then
begin
z := pos('var',richedit1.Lines.ValueFromIndex[a]);
richedit1.SelStart :=z;
richedit1.SelLength := 3;
richedit1.SelAttributes.Style := [fsBold];
richedit1.SelLength := 0;
//richedit1.SelStart :=z+3;
richedit1.SelAttributes.Style := [];
end;

end;

end;

agradeço a ajuda desde já!!

abraços!!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Testei sua rotina e para funcionar ficou como segue. (troquei o nome das variáveis para ficar mais legível, ok?!)

procedure TForm1.RichEdit1Change(Sender: TObject);
var
  PosNaLinha,
  PosNoTexto,
  IdxLinha,
  SavedPos :integer;
begin
  SavedPos := richedit1.SelStart;  // salva posição atual do cursor
  PosNaLinha := 0;
  PosNoTexto := 0;
  for IdxLinha := 0 to richedit1.Lines.Count -1 do
  begin
    PosNaLinha := pos('VAR', UpperCase(richedit1.Lines[IdxLinha]));
    if PosNaLinha > 0 then
    begin
      Inc(PosNoTexto, PosNaLinha -1);
      richedit1.SelStart := PosNoTexto;
      richedit1.SelLength := 3;
      richedit1.SelAttributes.Style := [fsBold];
      Inc(PosNoTexto, 3);
      richedit1.SelLength := 0;
      richedit1.SelStart := PosNoTexto;
      richedit1.SelAttributes.Style := [];
      Inc(PosNoTexto, Length(richedit1.Lines[IdxLinha]) -PosNaLinha);
      richedit1.SelStart := SavedPos;  // posição do cursor, visto que a cada tecla esta rotina é chamada
    end else
      Inc(PosNoTexto, Length(richedit1.Lines[IdxLinha])+2);  // +2 é para somar os #10#13
  end;
end;

existe algum componente que faça isso para mim??
Dê uma olhada neste componente (link - procure por RichEdit Syntax Highlighter 3.2). Tem os fontes junto, talvez você possa aproveitá-los para sanar suas dúvidas.
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...