
12.04.2010, 23:11
|
 |
Активный
|
|
Регистрация: 12.09.2008
Сообщения: 275
Репутация: 43
|
|
Код:
function TextColorReplace( RE :TRichEdit; TextPos :string; TextColor :TColor; Flags: TReplaceFlags ): Integer;
var
SearchStr : string;
Offset: Integer;
i :integer;
TextLength :integer;
begin
Result := 0;
SearchStr := re.Text;
i := 0;
Offset := 1;
TextLength := length(TextPos);
if rfIgnoreCase in Flags then
begin
SearchStr := AnsiUpperCase(SearchStr);
TextPos := AnsiUpperCase(TextPos);
end;
if not (rfReplaceAll in Flags) then
begin
Offset := Pos(TextPos, SearchStr);
if Offset <> 0 then
begin
RE.SelStart := Offset-1;
RE.SelLength := TextLength;
RE.SelAttributes.Color := TextColor;
Inc(Result);
end;
end
else
while Offset <> 0 do
begin
Offset := PosEx(TextPos, SearchStr, i);
if Offset <> 0 then
begin
RE.SelStart := Offset-1;
RE.SelLength := TextLength;
RE.SelAttributes.Color := TextColor;
Inc(Result);
i := Offset+1;
end;
end;
end;
Код:
Application.MessageBox(PChar('Закрашено '+IntToStr(TextColorReplace(RichEdit1, 'и', clred, [rfReplaceAll, rfIgnoreCase]))+' вхождений текста'), PChar('Количество вхождений текста'), MB_OK );
|