Я делаю так:
| Код | procedure TextToBold(Txt: String); var SearchLen: integer; startpos, Pos, endpos: integer; begin with Form1 do begin startpos := 0; endpos := Length(RichEdit1.Text); RichEdit1.Lines.BeginUpdate; while RichEdit1.FindText(Txt, startpos, endpos, [stMatchCase]) <> -1 do begin endpos := Length(RichEdit1.Text) - startpos; Pos := RichEdit1.FindText(Txt, startpos, endpos, [stMatchCase]); Inc(startpos, Length(Txt)); SetFocus; RichEdit1.SelStart := Pos; RichEdit1.SelLength := Length(Txt); RichEdit1.SelAttributes.Style := [fsBold]; end; end; end; |
Но скорость оставляет желать лучшего... Может, знаете, как сделать это быстрее. Например, у меня был такой вариант:
| Код | procedure TextToBold(Txt: String); begin with Form1 do begin RichEdit1.SelStart := RichEdit1.FindText(Txt, 0, Length(RichEdit1.Text), [stWholeWord]); RichEdit1.SelLength := Length(Txt); RichEdit1.SelAttributes.Style := [fsBold]; end; end; |
Но естественно он останавливался на первом найденном слове. Помогите! |