powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сделать RichText Object в frxReport подгружаемым?
7 сообщений из 7, страница 1 из 1
Как сделать RichText Object в frxReport подгружаемым?
    #39794382
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В RichText-овом объекте находится текст договора с параметрами. Но заказчик просит иногда изменить текст договора, приходится мне лезть в дельфи и править текст, затем снова компилировать программу и выгружать.
Как сделать, чтобы текст подгружался из файла, который бы могли править сами пользователи программы?
В идеале конечно хранить этот текст в базе, потому что система многопользовательская, и закидывать файл договора на каждый компьютер не очень удобно.
...
Рейтинг: 0 / 0
Как сделать RichText Object в frxReport подгружаемым?
    #39794387
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю как сейчас в новых версиях FR, они вроде лицензию изменили, а раньше разрешено было вкомпилировать в программу дизайнер отчетов. Это давало возможность, например, хранить дизайн в базе в BLOB поле, редактировать его если надо и т.д.

НО!!! Самое интересное, наши пользователи НИ РАЗУ не меняли дизайн сами (из-за боязни ошибки, видимо) , а каждый раз просили программиста поменять его. Так что по-любому, даже если дизайн подгружается, менять его (у нас) будет программист :=)

Так что вы можете сделать такое: присылаете готовый файл дизайна, в программе в спец. окошке пользователь с админ-правами загружает присланный файл дизайна в базу и готово.

У нас вообще 2 BLOB - поля для дизайнов. Одно для дизайна в разработке, второе для всех. В настройках программы можно выбрать режим, когда будет выбираться дизайн из разработки. Это удобно, чтобы попробовать попечатать из разных окон с реальными данными. И если всё устраивает, дизайн из разработки копируется во второе BLOB поле уже для всех.
...
Рейтинг: 0 / 0
Как сделать RichText Object в frxReport подгружаемым?
    #39794388
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>> ... Как сделать, чтобы текст подгружался ...

Но если отвечать по вопросу, то так:

(могу ошибиться где-нибудь немного в именах, т.к. пишу из головы)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
var
   Element    : TfrxClass;
   frxRTF     : TfrxRichEdit;
begin 
   // 1) из кода ДО формирования отчета найти обьект в отчете 
   Element := frxReport1.FindObject('frxRichEdit1');

   if Element is TfrxRichEdit then
   begin
      // 2) привести еко к типу, удобному для работы
      frxRTF := TfrxRichEdit(Element);

      // 3) подменить RichText
      frxRTF.RichText.LoadFromFile(....);
   end;

   // 5 - 4 - 3 - 2 - 1 поехали
   frxReport1.ShowReport(true);
...
Рейтинг: 0 / 0
Как сделать RichText Object в frxReport подгружаемым?
    #39799275
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

написал такую процедуру:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
procedure PrintReportContractAdult(Apatient_id: integer; Aquick: boolean = false);
var
  f: TfmReportContractAdult;
  Element: TfrxRichObject;
  frxRTF: TfrxRichView;
  q: TBISMySQLQuery;
  Stream: TADBlobStream;
begin
  f := TfmReportContractAdult.Create(nil);
  try
    f.patient_id := Apatient_id;
    f.ChangeQuery;

//    Element := f.frxReportContract.FindObject('Rich1');
//
//    if Element is TfrxRichView then
      begin
//        frxRTF := TfrxRichView(Element);
        frxRTF := TfrxRichView(f.frxReportContract.FindObject('Rich1'));
        q := TBISMySQLQuery.Create;
        try
          q.From('contract_template');
          q.Where('template_code= ?', 'adult');
          q.Open;
          Stream := TADBlobStream.Create(TBlobField(q.Q.FieldByName('contract')), bmRead);
          try
            frxRTF.LoadFromStream(Stream);
          finally
            Stream.Free;
          end;
        finally
          q.Free;
        end;

        if Aquick then
          begin
            if f.frxReportContract.PrepareReport then
              f.frxReportContract.Print;
          end
        else
          f.frxReportContract.ShowReport;

      end;
  finally
    f.Free;
  end;
end;



На строке frxRTF.LoadFromStream(Stream); вызывает ошибку:
First chance exception at $760418A2. Exception class TfrxInvalidXMLException with message 'Invalid file format'.
...
Рейтинг: 0 / 0
Как сделать RichText Object в frxReport подгружаемым?
    #39799623
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
procedure TForm1.Button1Click(Sender: TObject);
var
   obj            : TfrxComponent;
   frxRTF         : TfrxRichView;
   sRTFFilePath   : string;
begin
   obj := frxReport1.FindObject('Rich1');
   sRTFFilePath := ExtractFilePath(Application.ExeName) + 'Test-RTF.rtf';

   if not Assigned(obj) then
      ShowMessage('Rich1 not found')
   else
   if not (obj is TfrxRichView) then
      ShowMessage('Rich1 is not TfrxRichView: '+obj.ClassName)
   else
   if not FileExists(sRTFFilePath) then
      ShowMessage('RTF-file not found: '+sRTFFilePath)
   else
   begin
      frxRTF := TfrxRichView(obj);

      frxRTF.RichEdit.Lines.LoadFromFile(sRTFFilePath);   
      //frxRTF.RichEdit.Lines.LoadFromStream(mem);

      frxReport1.ShowReport(true);
   end;
end;
...
Рейтинг: 0 / 0
Как сделать RichText Object в frxReport подгружаемым?
    #39799685
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

RichEdit.Lines - это же коллекция строк. А форматирование текста, размер шрифта и т.д. не сохранится?
...
Рейтинг: 0 / 0
Как сделать RichText Object в frxReport подгружаемым?
    #39799687
svnvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён,

большое спасибо! Все работает!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как сделать RichText Object в frxReport подгружаемым?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]