А не проще разве просто проверить цвет слова прежде чем его заменить?
Вроде так должно быть:
Код:
Editor.SelStart := P;
Editor.SelLength := Length(tblDictionary.FieldByName('TextToFind').AsString);
if (Editor.SelAttributes.Style <> [fsBold]) and (Editor.SelAttributes.Color <> clMaroon)
then begin
Editor.ClearSelection;
Editor.SelAttributes.Style := [fsBold];
Editor.SelAttributes.Color := clMaroon;
Editor.SelText := tblDictionary.FieldByName('ReplaceWith').AsString;
end;
Inc(P, Editor.SelLength);