GARANTIR DESCONTO

Fórum Intercalar cor da fonte no RichEdit #300002

19/10/2005

0

Colegas, o problema é o seguinte:

Tenho uma tabela que contém os seguintes campos:

DE
MENSAGEM

Preciso colocar os valores num RichEdit como se fosse o MSN messenger. Exemplo:

[b:4b40ec566c]ding diz:[/b:4b40ec566c]
[color=green:4b40ec566c][b:4b40ec566c]Blá, blá, blá[/b:4b40ec566c][/color:4b40ec566c]
[b:4b40ec566c]ling diz:[/b:4b40ec566c]
[color=red:4b40ec566c][b:4b40ec566c]Blé, blé, blé[/b:4b40ec566c][/color:4b40ec566c]
[b:4b40ec566c]ding diz:[/b:4b40ec566c]
[color=green:4b40ec566c][b:4b40ec566c]Blí, blí, blí[/b:4b40ec566c][/color:4b40ec566c]
[b:4b40ec566c]ling diz:[/b:4b40ec566c]
[color=red:4b40ec566c][b:4b40ec566c]Bló, bló, bló[/b:4b40ec566c][/color:4b40ec566c]

Estou inserindo as linhas com o comando [b:4b40ec566c]RichEdit1.Lines.Add();[/b:4b40ec566c].

Só que não sei como fazer para ir trocando a cor da fonte, quando mudo a cor, está mudando a cor de todas as linhas, e não apenas a da que eu adicionei.

Já procurei aki no fórum e não vi nenhum tópico que me ajudasse.

Desde já agradeço,


Tenil

Tenil

Responder

Posts

19/10/2005

Tenil

Cheguei a esse código:
if ADOQMensagens.Active then
begin
  RichEdit1.Clear;
  ADOQMensagens.First;
  while not ADOQMensagens.Eof do
  begin
    RichEdit1.Lines.Add(ADOQMensagensDe.AsString + ´ diz:´);
    RichEdit1.Lines.Add(´  ´ + ADOQMensagensMensagem.AsString);
    ADOQMensagens.Next;
  end;
end;



Responder

Gostei + 0

20/10/2005

Tenil

up


Responder

Gostei + 0

20/10/2005

Tenil

up


Responder

Gostei + 0

20/10/2005

Tenil

down


Responder

Gostei + 0

20/10/2005

Marcio.theis

Uma das forma que vc pode tentar é a seguinte:

if ADOQMensagens.Active then
    begin
    RichEdit1.Clear;
    ADOQMensagens.First;
    while not ADOQMensagens.Eof do
        begin
        RichEdit1.SelAttributes.Color:=clBlack;
        RichEdit1.SelAttributes.Style:=[fsBold];
        RichEdit1.Lines.Add(ADOQMensagensDe.AsString + ´ diz:´);

        RichEdit1.SelAttributes.Color:=color;
        RichEdit1.SelAttributes.Style:=[fsBold];
        RichEdit1.Lines.Add(´  ´ + ADOQMensagensMensagem.AsString);
        if (color = clRed) then
            color:=clGreen
        else
            color:=clRed;
        ADOQMensagens.Next;
        end;
    end;


vc somente deve declarar uma variável como o nome de color no Privete do seu formulário:

  private
    { Private declarations }
    color: Tcolor;



Responder

Gostei + 0

20/10/2005

Tenil

Acabei de conseguir:

  if ADOQMensagens.Active then
  begin
    RichEdit1.Clear;
    ADOQMensagens.First;
    quem := ADOQMensagensDe.AsString;
    while not ADOQMensagens.Eof do
    begin
      RichEdit1.SelAttributes.Color := clBlack;
      RichEdit1.Lines.Add(Copy(ADOQMensagensDe.AsString, 0, Pos(´@´,ADOQMensagensDe.AsString)-1) + ´ diz:´);
      if ADOQMensagensDe.AsString = quem then
      begin
        RichEdit1.SelAttributes.Color := clRed;
      end
      else
      begin
        RichEdit1.SelAttributes.Color := clBlue;
      end;
      RichEdit1.Paragraph.LeftIndent := 20;
      RichEdit1.Lines.Add(´         ´ + ADOQMensagensMensagem.AsString);
      ADOQMensagens.Next;
    end;
  end;


Obrigado pela ajuda.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar