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

(Resolvido) Mudar de cor das palavras em um richedit


Samucaoo1

Pergunta

7 respostass a esta questão

Posts Recomendados

  • 0

nesses exemplos, voce procura uma palavra e depois muda a cor dela

basta voce entender o código e fazer as modificações para o seu uso

 

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    procedure RichEdit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RichEdit1Change(Sender: TObject);
var
   SelStartBak: integer;
   SelLengthBak: integer;
   SelStartAux: integer;
begin
   SelStartBak := RichEdit1.SelStart;
   SelLengthBak := RichEdit1.SelLength;
   RichEdit1.SelectAll;
   RichEdit1.SelAttributes.Color := clBlack;
   SelStartAux := RichEdit1.FindText('Pizza', 1, Length(RichEdit1.Text), [stWholeWord]);
   while SelStartAux > -1 do
       begin
       RichEdit1.SelStart := SelStartAux;
       RichEdit1.SelLength := 5; // numero de caracteres da palavra
       RichEdit1.SelAttributes.Color := clRed;
       Inc(SelStartAux, 5); // posicionar no inicio da palavra
       SelStartAux := RichEdit1.FindText('Pizza', SelStartAux, Length(RichEdit1.Text) - SelStartAux + 1, [stWholeWord]);
       end;
   RichEdit1.SelStart := SelStartBak;
   RichEdit1.SelLength := SelLengthBak;
end; 


end.

===================================================================================

outro exemplo

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Label1: TLabel;
    procedure RichEdit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  S1, S2 : string;

implementation

{$R *.dfm}

procedure TForm1.RichEdit1Change(Sender: TObject);

   function MyPos(stringtofind, stringtosearch: string; CaseInsensitive:
   boolean = true): integer;
   begin
     if CaseInsensitive then
     begin
       stringtofind := LowerCase(stringtofind);
       stringtosearch := LowerCase(stringtosearch);
     end;
     Result := Pos(stringtofind, stringtosearch);
   end;

  procedure TrocarCorPalavra(Palavra: string; Cor: TColor);
  var
    SelStartBak: integer;
    SelLengthBak: integer;
    SelStartAux: integer;
  begin
    SelStartBak := RichEdit1.SelStart;
    SelLengthBak := RichEdit1.SelLength;
    RichEdit1.SelAttributes.Color := clBlack;
    SelStartAux :=Pos((Pchar(palavra)), RichEdit1.Text)-1;
    while SelStartAux > -1 do
      begin
        RichEdit1.SelStart := SelStartAux;
        RichEdit1.SelLength := Length(Palavra);
        RichEdit1.SelAttributes.Color := Cor;
        Inc(SelStartAux, Length(Palavra));
        SelStartAux := RichEdit1.FindText(Palavra, SelStartAux, Length(RichEdit1.Text) - SelStartAux + 1, [stWholeWord]);
      end;
    RichEdit1.SelStart := SelStartBak;
    RichEdit1.SelLength := SelLengthBak;
  end;

begin
  if mypos('pizza',RichEdit1.Text,true) > 0 then
     TrocarCorPalavra('pizza', clRed);

  if mypos('pascal',RichEdit1.Text,true) > 0 then
     TrocarCorPalavra('pascal', clBlue);

  if mypos('delphi',RichEdit1.Text,true) > 0 then
     TrocarCorPalavra('delphi', clAqua);

  RichEdit1.SelAttributes.Color := clBlack;
end;


end.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

se voce olhar o código do exemplo que te passei vai encontrar isso:

APalavras : array of TRPalavras;

Esta varável irá descender do tipo TRPalavras criado anteriormente.

Acessando agora o evento OnClick do botão, adicione o código a 
seguir, o qual será responsável por armazenar no array quais as 
palavras e respectivas cores que devem ser destacadas no texto a 
ser digitado no componente RichEdit.

{ Adicionando as palavras a lista }
SetLength( APalavras, Length( APalavras )+1 );
APalavras[ High( APalavras ) ].DS_PALAVRA := Edit1.Text;
APalavras[ High( APalavras ) ].VR_COR := ColorBox1.Selected;
APalavras[ High( APalavras ) ].ESTILO := [fsBold];

OBS: como o programa vai saber que a palavra que voce acabou de digitar tem mudar de cor ?

voce pode ter essa palavra em um array ( ai assim que voce digitar essa palavra ela muda de cor) ... veja o exemplo do link acima, ou pode marcar com o mouse e faze-la mudar de cor.

tem muitos exemplos na net de como fazer isso

https://www.google.com.br/search?q=richedit+delphi&o que=richedit&gs_l=psy-ab.1.0.0l4.8355867.8357684.0.8360028.8.8.0.0.0.0.161.886.0j7.7.0....0...1.1.64.psy-ab..1.7.883...0i131k1j0i67k1.ln4TKE5VGBw

abraço

 

 

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...