Tfrxrichview
Доброго времени суток. Вопрос следующий: в моем отчете необходима логика следующего типа: в компоненте tfrxRichView внесен некоторый текст, на основании данных которые отображаются в отчете необходимо подчеркивать некоторые слова.
Например вот так:
tfrxRichView содержит текст: Принять (1), отклонить (2), на рассмотрение (3)
если переменная отчета iType получает от программы 1, то необходимо чтобы было подчеркнуто в tfrxRichView Принять (1), ну и так далее по логике. Как это реализовать: в делфях как это сделать для компонентов tRichEdit и tEdit проблем не возникло, в fastreport разобраться не могу никак.
Застопорился на FindText - как это реализовано в FastReport, процедура для TrichEdit delphi у меня такова:
function SearchTextAndSelect(RichEdit:TRichEdit;SearchText:string):Boolean;
var StartPos, EndPos, Pos: integer;
begin
StartPos := 0;
with RichEdit do
begin
EndPos := Length(Lines.Text);
Lines.BeginUpdate;
while FindText(SearchText,StartPos,EndPos,[stMatchCase]) <> -1 do
begin
EndPos := Length(Text) - StartPos;
Pos := FindText(SearchText,StartPos,Endpos,[stMatchCase]);
Inc(StartPos,Length(SearchText));
SetFocus;
SelStart := Pos;
SelLength := Length(SearchText);
SelAttributes.Style := SelAttributes.Style + [fsUnderline];
Break;
end;
Lines.EndUpdate;
end;
end;
Минимально необходимо - как добраться до FindText компонента TfrxRichView
Например вот так:
tfrxRichView содержит текст: Принять (1), отклонить (2), на рассмотрение (3)
если переменная отчета iType получает от программы 1, то необходимо чтобы было подчеркнуто в tfrxRichView Принять (1), ну и так далее по логике. Как это реализовать: в делфях как это сделать для компонентов tRichEdit и tEdit проблем не возникло, в fastreport разобраться не могу никак.
Застопорился на FindText - как это реализовано в FastReport, процедура для TrichEdit delphi у меня такова:
function SearchTextAndSelect(RichEdit:TRichEdit;SearchText:string):Boolean;
var StartPos, EndPos, Pos: integer;
begin
StartPos := 0;
with RichEdit do
begin
EndPos := Length(Lines.Text);
Lines.BeginUpdate;
while FindText(SearchText,StartPos,EndPos,[stMatchCase]) <> -1 do
begin
EndPos := Length(Text) - StartPos;
Pos := FindText(SearchText,StartPos,Endpos,[stMatchCase]);
Inc(StartPos,Length(SearchText));
SetFocus;
SelStart := Pos;
SelLength := Length(SearchText);
SelAttributes.Style := SelAttributes.Style + [fsUnderline];
Break;
end;
Lines.EndUpdate;
end;
end;
Минимально необходимо - как добраться до FindText компонента TfrxRichView
Комментарии
Есть два варианта:
1) В коде Delphi после загрузки отчета в frxReport но перед ShowReport пишем: То есть мы динамически к классу TfrxRichView добавляем метод FindText, который потом можно дергать из скрипта отчета.
Не забудьте в обработчике CallMethod реализовать обработку вызова метода TfrxRichView.FindText.
Примеры написания CallMethod и добавления методов и свойств можно посмотреть в самом коде FR или в коде моих библиотек (см. мою подпись).
2) В коде скрипта скрипта для поиска нужного frxRichView пишем: