LazReport: баги и вопросы...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

Еще как вариант можно воспользоваться глобальной переменной

Код: Выделить всё

frVariables['ИмяПеременной'] := 'Ваше значение'

и тогда отпадет необходимость в
Затем в отчете добавляем переменные в Файл -> Список переменных...
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Столкнулся с проблемой вывода символов "[", "]" в отчете, выдает ошибку, пытается произвести вычисления.
В отчете обязательно должны фигурировать именно квадратные скобки.
Кто нибудь сталкивался с данной проблемой?
Буду рад любым идеям.
xcod
постоялец
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Сообщение xcod »

можно подробней и желательно с примером
как Вы пытаетесь эти символы вывести в отчёте?
alaken
постоялец
Сообщения: 221
Зарегистрирован: 18.02.2010 08:02:13

Сообщение alaken »

Символы уже в текстовом файле.

Код: Выделить всё

FTextFile.LoadFromFile(  FileName  );
frRpt :=  TfrReport.Create( Nil );
 frRpt.Pages.Add();
 Page := frRpt.Pages[ frRpt.Pages.Count - 1 ];
 frView := frCreateObject( gtMemo, '' );
 frView.SetBounds( FPrintRect.Left, FPrintRect.Top, FPrintRect.Right, FPrintRect.Bottom );
 ( frView as TfrMemoView ).Font := FFont;
 Page.Objects.Add( frView );

Count := FTextFile.Count - 1;

  for
    idx := 0
  to
    Count
  do
  begin

    if
      FTextFile.Strings[idx] <> ''
    then
      frView.Memo.Add( FTextFile.Strings[idx] )
    else
      frView.Memo.Add( ' ' ); 

  end;

frRpt.PrepareReport;



Добавлено спустя 38 минут 51 секунду:
Выход я нашел, но он ресурсоемкий.
Идея в том чтобы текст с квадратными ковычками подготовить и в место квадратных ковычек вписать переменные LazReport'а и обрабатывать эти переменные. Жуть.

Код: Выделить всё

  frRpt :=  TfrReport.Create( Nil );
  frRpt.OnGetValue := frRptGetValue;
  frRpt.DoublePass := True; 
...
for
    idx := 0
  to
    Count
  do
  begin

    if
      FTextFile.Strings[idx] <> ''
    then
      frView.Memo.Add
      (
        StringReplace
        (
          StringReplace
          (
            StringReplace
            (
              StringReplace
              (
                FTextFile.Strings[ idx ],
                '[',
                '#SBL#',
                [ rfReplaceAll ]
              ),
              ']',
              '#SBR#',
              [ rfReplaceAll ]
            ),
            '#SBL#',
            '[SBL]',
            [ rfReplaceAll ]
          ),
          '#SBR#',
          '[SBR]',
          [ rfReplaceAll ]
        )
      )
    else
      frView.Memo.Add( ' ' );
  end;


Код: Выделить всё

procedure TPrintStatement.frRptGetValue(const ParName: String; var ParValue: Variant);
begin

  if
    ParName = 'SBL'
  then
    ParValue := '[';

  if
    ParName = 'SBR'
  then
    ParValue := ']';

end;


Добавлено спустя 1 минуту 59 секунд:
И кстате
frRpt.DoublePass := True;
- не работает, TOTALPAGES = 0.
Тоже проблема.
Жду идей =)
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

alaken
Лучше не ждать - а зарегистрировать проблему на багтрекере. Тогда её точно исправят.
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

Printer.SetPrinter

Не понимаю откуда вы берете такие свойства и методы у Printer я там в упор не вижу их.
slyubez
постоялец
Сообщения: 185
Зарегистрирован: 31.03.2015 07:44:07

Сообщение slyubez »

Не понимаю откуда вы берете такие свойства и методы у Printer я там в упор не вижу их.

Вы бы хоть на дату сообщений посмотрели.
jsa
постоялец
Сообщения: 295
Зарегистрирован: 28.11.2017 12:46:04

Сообщение jsa »

slyubez писал(а):Вы бы хоть на дату сообщений посмотрели.

Что вы хотите этим сказать?
В старых темах нет смысла писать, и задавать вопросы, нужно каждый раз новые плодить?
Какой срок устаревания темы? полгода? год? 3? 5? как определять?
brick08
новенький
Сообщения: 12
Зарегистрирован: 05.09.2016 14:39:08

Сообщение brick08 »

возникла необходимость вставлять в отчет типа гиперссылки (например ссылку на файл на сетевом ресурсе). Кто-нибудь уже делал что-то подобное?
Как это проще реализовать? По OnClick по-моему не получится.
И еще вопрос, можно ли в пределах одного Memo показывать текст разными шрифтами?
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

1. Готовой гиперсылки нет - надо вручную у компоненты frReport обработать соответствующее событие.
2. Такого пока нет. Хотя через обработчик у frReport реализовать можно.
Ответить