Erso Postado Março 7, 2007 Denunciar Share Postado Março 7, 2007 Pessoal eu preiso colorir linhas de um riche editetipo ocara formatar pra deichar tal palavra com cor de fundo verde outra azul essas coisas.obrigado!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Março 12, 2007 Denunciar Share Postado Março 12, 2007 (editado) Pessoal eu preiso colorir linhas de um riche editetipo ocara formatar pra deichar tal palavra com cor de fundo verde outra azul essas coisas.Esses tempos atrás fiz uma gambiarra para implementar algo parecido para destacar ocorrências de determinada palavra no texto. Mas, pesquisando um pouco mais, descobri que o recurso está disponível a partir da versão 2.0 do RichEdit (msdn - procurar por background) - quem mandou eu não pesquisar primeiro. :ph34r: Então, procurando simplificar o código e generalizá-lo, de modo a ser colocado em uma unit de "rotinas úteis", eu o escrevi para receber o RichEdit como parâmetro, bem como as cores de fundo e frente e modo de marcação - seleção, palavra ou todo texto. O código para implementar a função destaca texto, ficou assim:// Modos possíveis: SCF_ALL / SCF_SELECTION / SCF_WORD (*** declaradas na unit RichEdit) procedure MarkRichEditText(RichEdit :TRichEdit; fgColor, bkColor :TColor; MarkMode :Integer); var CharFormat :TCharFormat2; begin // na marcação de palavra, na chamada a EM_SETCHARFORMAT deve ser // concatenado SCF_SELECTION ao parâmetro SCF_WORD if MarkMode = SCF_WORD then MarkMode := MarkMode or SCF_SELECTION; CharFormat.cbSize := SizeOf(CharFormat); CharFormat.dwMask := CFM_BACKCOLOR or CFM_COLOR; CharFormat.crBackColor := ColorToRGB(bkColor); CharFormat.crTextColor := ColorToRGB(fgColor); SendMessage(RichEdit.handle, EM_SETCHARFORMAT, MarkMode, LongInt(@CharFormat)); end;forma de uso: - Marcar texto selecionado -> MarkRichEditText(RichEdit1, clRed, clLime, SCF_SELECTION); - Marcar texto inteiro -> MarkRichEditText(RichEdit1, clBlack, clYellow, SCF_ALL); - Marcar palavra sob o cursor -> MarkRichEditText(RichEdit1, RichEdit1.Font.Color, clAqua, SCF_WORD);Ref. EM_SETCHARFORMAT (msdn), CHARFORMAT (msdn), CHARFORMAT2 (msdn)Abraços_________Edit: Atualizados os links Editado Fevereiro 3, 2012 por Micheus Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Erso Postado Março 14, 2007 Autor Denunciar Share Postado Março 14, 2007 Cara !! muito obrigado!!! :D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 DiegoBulg Postado Fevereiro 3, 2012 Denunciar Share Postado Fevereiro 3, 2012 Saberiam me dizer como faço para verificar a cor de fundo de acordo com o texto selecionado?Grato Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Fevereiro 3, 2012 Denunciar Share Postado Fevereiro 3, 2012 Seguindo a filosofia da procedure acima, aparentemente voce precisaria utilizar o comando EM_GETCHARFORMAT utilizando como parâmetro a estrutura CHARFORMAT2 e no qual o campo dwMask deve conter o valor SCF_SELECTION.Eu só não posso lhe afirmar que quando houver diferentes cores em uma seleção. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Erso
Pessoal eu preiso colorir linhas de um riche edite
tipo ocara formatar pra deichar tal palavra com cor de fundo verde outra azul essas coisas.
obrigado!!!
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.