Форматирование определенных найденных слов в текстовой строке в Crystal Reports - PullRequest
1 голос
/ 18 марта 2011

У меня есть список слов, которые я ищу в поле «Заметки» в таблице, и при отображении этого поля «Примечания» в моем Crystal Report я хотел бы как-то выделить (изменить цвет шрифта) только определенныепомеченное слово в текстовой строке заметки.

Пример: список слов: Джо, Сара, Эми, Джефф Текст примечания: «Я зашел и поговорил с Джо, чтобы проверить состояние учетной записи, и Эми поздоровалась».

желаемый результат: текст заметки отображается в отчете со словами «Джо» и «Эми» красным.

Я пробовал использовать RTF и HTML в параметре интерпретации текста в свойствахгде я могу успешно отформатировать текст примечания к любому из этих текстовых выходов.Тем не менее, я до сих пор не знаю правильного кода для выделения и форматирования определенных слов из моего списка, особенно если в тексте поля отображается более одного из моих слов.

Заранее благодарен за любую помощь, которую выможете дать мне!

Ответы [ 2 ]

1 голос
/ 15 апреля 2014

Я знаю, что это старый, но я нашел его в поиске проблемы, которая у меня была. Код с ответом работает, но мне показалось, что он немного загроможден, а также мне нужно было предоставить список слов для выделения. Вот что я придумал.

Local Stringvar Array searchwords:=MakeArray("Joe", "Sarah", "Amy");
local stringvar notes:={Notes};
local numbervar i;
for i:=1 to count(searchwords) do (
    notes:=replace(notes,searchwords[i],"<font color='red'>" & searchwords[i] & "</font>",1,-1,1);
);
notes

Единственное, на что следует обратить внимание, это то, что он найдет результаты, когда искомое слово является частью большего слова, то есть «РАБОТА» будет выделена жирным шрифтом в «Мастерской».

Хотя это работает для наших нужд, так как мы хотим, чтобы «работа», «работа», «работали» и т. Д. Во всех основных моментах, отчеты о кристаллах, не поддерживающие Regex, являются довольно большим недостатком.

0 голосов
/ 19 марта 2011

Я сделал нечто подобное пару лет назад:

StringVar SearchText := "has";
StringVar Htm1 := "<b>";
StringVar Htm2 := "</b>";
StringVar Result := ""; 
StringVar Temp := ""; 
NumberVar Start := 1;  
NumberVar Ln := Len(SearchText);  
NumberVar Loc := Instr({@TextField}, SearchText);  
While Loc > 0 Do (  
    Temp := Mid({@TextField}, Start, Loc - Start) + Htm1 + Mid({@TextField}, Loc, Ln) & Htm2;
    Result := Result + Temp;  
    Start := Loc + Ln;  
    Loc := Instr(Start, {@TextField}, SearchText);  
);  
Temp := Mid({@TextField}, Start);  
Result := Result + Temp;  
Result  

В этом случае я ищу в поле с именем @TextField значение в SearchText и выделяю значения.Возможно, не самый эффективный код, но он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...