Intercalar cor da fonte no RichEdit
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,
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
Curtidas 0
Respostas
Tenil
19/10/2005
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;
GOSTEI 0
Tenil
19/10/2005
up
GOSTEI 0
Tenil
19/10/2005
up
GOSTEI 0
Tenil
19/10/2005
down
GOSTEI 0
Marcio.theis
19/10/2005
Uma das forma que vc pode tentar é a seguinte:
vc somente deve declarar uma variável como o nome de color no Privete do seu formulário:
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;GOSTEI 0
Tenil
19/10/2005
Acabei de conseguir:
Obrigado pela ajuda.
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.
GOSTEI 0