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

Cores no Memo1


Tetzner

Pergunta

3 respostass a esta questão

Posts Recomendados

  • 0

no memo so altera o texto todo

incluir um ColorDialog1 da paleta Dialogs

procedure TForm1.Button1Click(Sender: TObject);

begin

ColorDialog1.Color:= Memo1.Font.Color;

if ColorDialog1.Execute then

Memo1.Font.Color := ColorDialog1.Color;

end;

se quiser com linha individual use um RichEdit da paleta win32

usando FontDialog1 voce pode formatar da maneira que quiser

procedure TForm1.Button1Click(Sender: TObject);

begin

FontDialog1.Font.Assign(RichEdit1.SelAttributes);

if (FontDialog1.Execute) then

RichEdit1.SelAttributes.Assign(FontDialog1.Font);

end;

Link para o comentário
Compartilhar em outros sites

  • 0

Uma dica de adriano_servitec

ACTIVEDELPHI

Site para programadores em Delphi

unit Unit1; 

interface 

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

resourcestring 
sSaveChanges = 'Save changes to %s?'; 
sOverWrite = 'OK to overwrite %s'; 
sUntitled = 'Untitled'; 
sModified = 'Modified'; 
sColRowInfo = 'Line: %3d Col: %3d'; 

const //incluir 
maxdim=30; 

type 
TRPalavras = Record 
DS_PALAVRA : String; 
VR_COR, VR_COR2 : TColor; 
DS_FONTE, DS_FONTE2 : TFontStyles; //Esta linha não tinha no seu codigo inclui ela 
end; 

TAPalavras = array of TRPalavras; 
vetor= array [0..maxdim] of real; 

TForm1 = class(TForm) 
REdit1: TRichEdit; 
Edit1: TEdit; 
Button1: TButton; 
Button2: TButton; 
FontSize: TComboBox; 
ComboBox1: TComboBox; 
procedure Button1Click(Sender: TObject); 
procedure Button2Click(Sender: TObject); 
procedure FontSizeChange(Sender: TObject); 
procedure ComboBox1Click(Sender: TObject); 
procedure FormCreate(Sender: TObject); 
private 
{ Private declarations } 
APalavras: TAPalavras; 
function CurrText: TTextAttributes; // verifique esta linha tambem 

public 
{ Public declarations } 
end; 

var 
Form1: TForm1; 

implementation 

{$R *.DFM} 
function TForm1.CurrText: TTextAttributes; 
begin 
if REdit1.SelLength > 0 then Result := REdit1.SelAttributes 
else Result := REdit1.DefAttributes; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
var 
iPosIni: Integer; 
iPosFim: Integer; 
iSelStart: Integer; 
iSelLength: Integer; 
iLoopFor: Integer; 
sText, str: String; 
begin 
SetLength( APalavras, Length( APalavras )+1 ); 
APalavras[ High( APalavras ) ].DS_PALAVRA :=EDIT1.TEXT; 
APalavras[ High( APalavras ) ].VR_COR := clRed; 
APalavras[ High( APalavras ) ].DS_FONTE := [fsUnderline,fsBold]; //incluir esta linha fsUnderline significa sublinhado e fsBold negrito...de uma olhada no help do delphi la tem exemplos como usar eu tirei de la para adpitar no seu codigo. 
LockWindowUpdate(redit1.Handle); 

iSelStart := redit1.SelStart; 
iSelLength := redit1.SelLength; 

for iLoopFor := 0 to High( APalavras ) do 
begin 

iPosIni := 0; 
iPosFim := Length( APalavras[ iLoopFor ].DS_PALAVRA ); 

while True do 
begin 

iPosIni := redit1.FindText( APalavras[ iLoopFor ].DS_PALAVRA, iPosIni, Length( redit1.Text ), [ stMatchCase ] ); 

if iPosIni < 0 then 
Break; 

redit1.SelStart := iPosIni; 
redit1.SelLength := iPosFim; 
redit1.SelAttributes.Color := APalavras[ iLoopFor ].VR_COR; 
redit1.SelAttributes.Style:= APalavras[ iLoopFor ].DS_Fonte; // incluir esta linha 
iPosIni := iPosIni + iPosFim +1; 

end; 
end; 
redit1.SelStart := iSelStart; 
redit1.SelLength := iSelLength; 

LockWindowUpdate(0); 


end; 

procedure TForm1.Button2Click(Sender: TObject); 
var 
iPosIni: Integer; 
iPosFim: Integer; 
iSelStart: Integer; 
iSelLength: Integer; 
iLoopFor: Integer; 
sText, str: String; 
begin 
SetLength( APalavras, Length( APalavras )+1 ); 
APalavras[ High( APalavras ) ].DS_PALAVRA :=EDIT1.TEXT; 
APalavras[ High( APalavras ) ].VR_COR2 := clBlack; //esta linha é para voltar a fonte preta 
LockWindowUpdate(redit1.Handle); 

iSelStart := redit1.SelStart; 
iSelLength := redit1.SelLength; 
edit1.text:=''; 
for iLoopFor := 0 to High( APalavras ) do 
begin 

iPosIni := 0; 
iPosFim := Length( APalavras[ iLoopFor ].DS_PALAVRA ); 

while True do 
begin 

iPosIni := redit1.FindText( APalavras[ iLoopFor ].DS_PALAVRA, iPosIni, Length( redit1.Text ), [ stMatchCase ] ); 

if iPosIni < 0 then 
Break; 

redit1.SelStart := iPosIni; 
redit1.SelLength := iPosFim; 
redit1.SelAttributes.Color := APalavras[ iLoopFor ].VR_COR2; 
redit1.SelAttributes.Style:= APalavras[ iLoopFor ].DS_Fonte2; // incluir esta linha 
iPosIni := iPosIni + iPosFim +1; 

end; 
end; 
redit1.SelStart := iSelStart; 
redit1.SelLength := iSelLength; 

LockWindowUpdate(0); 
edit1.setfocus; 


end; 

procedure TForm1.FontSizeChange(Sender: TObject); 
begin 
CurrText.Size := StrToInt(FontSize.Text); 

end; 

procedure TForm1.ComboBox1Click(Sender: TObject); 
begin 
REdit1.Font.Name := ComboBox1.Items[ComboBox1.ItemIndex]; //muda o estilo da fonte 

end; 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
ComboBox1.Items := Screen.Fonts; //chama o estilo da fonte 

end; 

end. 


Se quiser ignorar MAIUSCULO e MINUSCULO no texto, apenas retire stMatchCase na linha: 
iPosIni := redit1.FindText( APalavras[ iLoopFor ].DS_PALAVRA, iPosIni, 
Length( redit1.Text ), [ stMatchCase ] ); 

ficando: 
iPosIni := redit1.FindText( APalavras[ iLoopFor ].DS_PALAVRA, iPosIni, 
Length( redit1.Text ), [] );
_______________ ACTIVEDELPHI Site para programadores em Delphi outra dica de gilsonnrodrigues
procedure TForm1.Button1Click(Sender: TObject); 
var 
  FoundAt : LongInt; 
  StartPos, ToEnd : integer; 
  vStream : TFileStream; 
  vBusca : string; 
begin 
  vBusca := Edit1.text; 
  with RichEdit1 do 
  begin 
    SelStart := 0; 
    SelLength := 0; 
    repeat 
      StartPos := SelStart + SelLength; 
      ToEnd := Length(Text) - StartPos; 
      FoundAt := FindText(vBusca, StartPos, ToEnd, []); 
      if FoundAt < 0 then Break; 
      begin 
        SelStart := FoundAt; 
        SelLength := Length(vBusca); 
      end; 
      SelAttributes.Color := clRed; 
      SelAttributes.Style := SelAttributes.Style + [fsBold]; 
    until False; 
    SelStart := 0; 
    SelLength := 0; 
    SelAttributes.Color := clWindowText; 
  end; 
end;
este codigo acima procura por um subtexto no texto do richedit e muda a cor dele pra vermelho o comando abaixo mudar as cor e stilo do texto selecionado
RichEdit1.SelAttributes.Color := clBlue; //Mudar a Cor 
RichEdit1.SelAttributes.Style := [fsBold]; //Coloca Negrito...
No exemplo abaixo esta verificando o estilo do texto selecionado e modificando se o texto for bold fica normal e vice versa...
with RichEdit.SelAttributes do 
if fsBold in Style then 
Style := Style - [fsBold] 
else 
Style := Style + [fsBold];

--------------------------------------------------------------------------------

Para quem tem o JEDI instalado da para usar o componente LinkLabel que entre outras coisas pode ser um RichEdit e ainda pode ter links no texto

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
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...