Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > TfrxRichView


Автор: DarkProg 10.8.2011, 15:49
Создаю отчёт полностью динамически.
Основной компонент - это TfrxRichView, мне туда надо поместить переменные и форматирование.
С переменными всё просто, а вот отформатировать текст не получается, ну как бы форматируется, но только последний добавленный текст

Собственно говоря код вот
Код

         OldLength:=RichView.RichEdit.GetTextLen;// это в последствии будет selstart
         if DMShablons.GetGroupParam(tree_element_prog_name.Values[ANode], GroupArray).razmeshenie=0 then
            RichView.RichEdit.Text:=RichView.RichEdit.Text+'[<'+tree_element_user_name.Values[node]+'>]'+#13
           else
            RichView.RichEdit.Text:=RichView.RichEdit.Text+'[<'+tree_element_user_name.Values[node]+'>]'+' ';
         RichView.RichEdit.SelStart:=OldLength;
         RichView.RichEdit.SelLength:=length('[<'+tree_element_user_name.Values[node]+'>]'+' ');
         RichView.RichEdit.SelAttributes.Assign(DMShablons.GetElementParam(tree_element_prog_name.Values[node], ElementArray).Font);


Интересный момент заключается в том, что в отладчике при просмотре SelText, SelAttributes.Name, всё присваивается корректно, но после отображения отчёта у меня форматированным остаётся только лишь последний добавленный текст.

Есть предложения, что я делаю не так?

Ах да, вот так я создаю RichVeiw

Код

procedure TfrmMyForm.CreateReportForm();
Var   Rep_Var:TfrxVariable;
      RichView: TfrxRichView;
      Page: TfrxReportPage;
      i:integer;
      RootNode:TcxTreeListNode;
begin
  PreviewReport.Clear;
  For i:=0 to length(ElementArray)-1 do
  begin
    Rep_Var:=PreviewReport.Variables.Add;
    Rep_Var.Name:=ElementArray[i].user_name;
    Rep_Var.Value:=''''+ElementArray[i].user_name+'''';
  end;
  Page:=TfrxReportPage.Create(PreviewReport);
  Page.Name:=Name.Text;
  RichView:=TfrxRichView.Create(Page);
  RichView.Name:='RichReport';
  RichView.Align:=baClient;
  RichView.RichEdit.Paragraph.LeftIndent:=15;
  RichView.RichEdit.Paragraph.RightIndent:=15;
  RichView.RichEdit.Paragraph.FirstIndent:=30;
  RichView.RichEdit.Paragraph.Alignment:=paJustify;

end;

Автор: DarkProg 11.8.2011, 12:06
Короче ларчик просто открывается.

Текст нужно добавлять либо через Add и тогда будет работать форматирование, либо запомнить все интересующие позиции и потом по окончании формирования текста произвести форматирование

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)