Change font color, size, style, and back color of certain words inside a rich edit (Views: 31)
Problem/Question/Abstract: Do you want to have a nice looking rich edit? Answer: This procedure will search and change the attributes (font name, font size, font color, font style, and back color) of certain words inside a rich edit control. Try the example. type TTextAttributes = record Font: TFont; BackColor: TColor; end; {..} procedure SetTextColor(oRichEdit: TRichEdit; sText: string; rAttributes: TTextAttributes); var iPos: Integer; iLen: Integer; Format: CHARFORMAT2; begin FillChar(Format, SizeOf(Format), 0); Format.cbSize := SizeOf(Format); Format.dwMask := CFM_BACKCOLOR; Format.crBackColor := rAttributes.BackColor; iPos := 0; iLen := Length(oRichEdit.Lines.Text); iPos := oRichEdit.FindText(sText, iPos, iLen, []); while iPos <> -1 do begin oRichEdit.SelStart := iPos; oRichEdit.SelLength := Length(sText); oRichEdit.SelAttributes.Color := rAttributes.Font.Color; oRichEdit.SelAttributes.Size := rAttributes.Font.Size; oRichEdit.SelAttributes.Style := rAttributes.Font.Style; oRichEdit.SelAttributes.Name := rAttributes.Font.Name; oRichEdit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format)); iPos := oRichEdit.FindText(sText, iPos + Length(sText), iLen, []); end; end; Example: var rAttrib: TTextAttributes; begin rAttrib.Font := TFont.Create; rAttrib.Font.Color := clWhite; rAttrib.Font.Size := 16; rAttrib.Font.Style := [fsBold]; rAttrib.BackColor := clRed; SetTextColor(RichEdit1, 'Delphi', rAttrib); //Change another word attributes. rAttrib.Font.Color := clYellow; rAttrib.Font.Size := 10; rAttrib.Font.Style := [fsBold, fsItalic]; rAttrib.BackColor := clBlue; SetTextColor(RichEdit1, 'Is greate', rAttrib); rAttrib.Font.Free; //Now free the font. end; |