Tetzner Postado Janeiro 9, 2008 Denunciar Share Postado Janeiro 9, 2008 tem alguma maneira de se escolher a cor de uma linha ou palavra num tipo memo ?se não, como fazer de outro modo ou objeto ... Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 vms Postado Janeiro 9, 2008 Denunciar Share Postado Janeiro 9, 2008 no memo so altera o texto todoincluir um ColorDialog1 da paleta Dialogsprocedure TForm1.Button1Click(Sender: TObject);beginColorDialog1.Color:= Memo1.Font.Color;if ColorDialog1.Execute thenMemo1.Font.Color := ColorDialog1.Color;end;se quiser com linha individual use um RichEdit da paleta win32usando FontDialog1 voce pode formatar da maneira que quiserprocedure TForm1.Button1Click(Sender: TObject);beginFontDialog1.Font.Assign(RichEdit1.SelAttributes);if (FontDialog1.Execute) thenRichEdit1.SelAttributes.Assign(FontDialog1.Font);end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Tetzner Postado Janeiro 9, 2008 Autor Denunciar Share Postado Janeiro 9, 2008 não funciona para uma palavra ou linhaisso muda a cor do texto todo ...eu quero "destacar" uma linha, palavra, letra ... mas vlw mesmo assim Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Janeiro 9, 2008 Denunciar Share Postado Janeiro 9, 2008 Uma dica de adriano_servitecACTIVEDELPHI Site para programadores em Delphiunit 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Tetzner
tem alguma maneira de se escolher a cor de uma linha ou palavra num tipo memo ?
se não, como fazer de outro modo ou objeto ...
Link para o comentário
Compartilhar em outros sites
3 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.