передача значения в переменную LazReport'а - РЕШЕНО

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

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

Ответить
zozuliar
новенький
Сообщения: 35
Зарегистрирован: 09.02.2014 21:56:58

передача значения в переменную LazReport'а - РЕШЕНО

Сообщение zozuliar »

Я создал в репорте переменную kategorii через меню File->Variables List
Хочу перед вызовом MyReport ShowReport присвоить этой переменой значение. Как это сделать?
Lazarus 1.0.14
FPC 2.6.2
Win 7 32-bit
Последний раз редактировалось zozuliar 22.02.2014 12:06:56, всего редактировалось 1 раз.
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

frVariables['kategorii']:='bla-bla-bla';
или
frVariables['kategorii']:=123;

естетственно, должен быть подключен модуль lr_class.pas
zozuliar
новенький
Сообщения: 35
Зарегистрирован: 09.02.2014 21:56:58

Сообщение zozuliar »

спасибо! Помогло.
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

А у меня проблема появилась с передачей параметров, я бы сказа больше - шарабашка.
Ситуация в следующем: есть отчет, в котором определены две переменные (наподобие таких отчетов несколько). Параметры передаю через событие OnGetValue:

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

procedure TForm.frReportGetValue(const ParName: String;  var ParValue: Variant);
begin
  if ParName = 'TITLE' then  ParValue := tmp_Report;
  if ParName = 'DATE_TXT' then ParValue := 'на ' + tmp_DateToText(Date) + ' года.';
end;

Во все других отчетах это проходит, а в данной TForm в этом отчете - нет. Я не зря сказал "в данной TForm", т.к. этот отчет выполнял из другой формы - все нормально.
Смотрел значение ParName из процедуры frReportGetValue. Какая то фигня. Такое впечатление что чтение имени переменной происходит со смещением и равно: "ITLE" ... далее идет набор символов. Соответственно переменная DATE_TXT: "ATE_TXT"...
Где косяк? Всю голову сломал...
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

1. На первый взгляд - всё верно. Надо тестовый проект.
2. А почему через frVariables не передаёшь? Переменные то у тебя статичные.
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

1. "Надо тестовый проект" - т.е. что конкретно?
2. Привычка с FastReport`а осталась. Пробовал frVariables['kategorii']:='bla-bla-bla'; - у меня не работает, может порядок вызова не тот.
Собственно делаю так (через frVariables):

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

        tmp_Shablon := tmp_Path + 'TechnReport.lrf';
        if not SysUtils.FileExists(tmp_Shablon) then
          begin
            _my_MessageDLG('Шаблон не найден:'#13#10 + String(tmp_Shablon), mtError, [mbOK]);
            Exit;
          end;
        with frReport do
          begin
            LoadFromFile(tmp_Shablon);
            frVariables['TITLE'] := tmp_Report;
            ShowReport;
          end;
jec
новенький
Сообщения: 14
Зарегистрирован: 19.01.2011 11:57:57

Сообщение jec »

Подниму тему.
Не получается передать переменную в отчет. С запросом из БД все получается, а вот передать, как пишет alexs, статичную не получается. Ни через frVariables, ни через процедуру frReportGetValue. Поскольку мне достался проект на Lazarus 0.9.28, то я и продолжаю сопровождать на нём же. Сделал тестовый пример в Simply Linux 7.0.4 от Altlinux, Lazarus 1.2.0, FPC 2.6.2. Результат тот же. Чего-то я упускаю, а вот что?

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

unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LR_Class, Forms, Controls, Graphics, Dialogs,
  StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    frReport1: TfrReport;
    procedure Button1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  frVariables['kateg']:=Edit1.Text;
  frReport1.ShowReport;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
  frReport1.LoadFromFile('rep.lrf');
end;

end.
 
Аватара пользователя
alexs
долгожитель
Сообщения: 4066
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь
Контактная информация:

Сообщение alexs »

Визуально всё верно. А в новых версиях если проверить?
jec
новенький
Сообщения: 14
Зарегистрирован: 19.01.2011 11:57:57

Сообщение jec »

Примеры из Lazreport'a работают как и задумано и в старой (0.9.28 на Windovs7) и в достаточно свежей (1.2.0 на Simply Linux 7.0.3 от Altlinux). Компы тоже разные. Не знаю, можно-ли и как прикреплять файлы к сообщениям
Ustas
постоялец
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

Сообщение Ustas »

Может кому пригодиться:
http://forum.altlinux.org/index.php?topic=34351.0
Проверил - работает (решение в предполедней записи).
Ответить