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

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

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

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

Сообщение zozuliar » 18.02.2014 00:07:37

Я создал в репорте переменную 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 раз.
zozuliar
новенький
 
Сообщения: 35
Зарегистрирован: 09.02.2014 21:56:58

Re: передача значения в переменную LazReport'а

Сообщение alexs » 18.02.2014 20:21:43

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

естетственно, должен быть подключен модуль lr_class.pas
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: передача значения в переменную LazReport'а

Сообщение zozuliar » 19.02.2014 13:14:32

спасибо! Помогло.
zozuliar
новенький
 
Сообщения: 35
Зарегистрирован: 09.02.2014 21:56:58

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

Сообщение Ustas » 03.03.2014 14:16:12

А у меня проблема появилась с передачей параметров, я бы сказа больше - шарабашка.
Ситуация в следующем: есть отчет, в котором определены две переменные (наподобие таких отчетов несколько). Параметры передаю через событие 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"...
Где косяк? Всю голову сломал...
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

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

Сообщение alexs » 03.03.2014 15:06:13

1. На первый взгляд - всё верно. Надо тестовый проект.
2. А почему через frVariables не передаёшь? Переменные то у тебя статичные.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение Ustas » 04.03.2014 09:36:39

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;
Ustas
постоялец
 
Сообщения: 153
Зарегистрирован: 19.10.2009 14:58:10
Откуда: г.Муром

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

Сообщение jec » 24.09.2014 11:49:59

Подниму тему.
Не получается передать переменную в отчет. С запросом из БД все получается, а вот передать, как пишет 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.
jec
новенький
 
Сообщения: 14
Зарегистрирован: 19.01.2011 12:57:57

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

Сообщение alexs » 24.09.2014 14:49:13

Визуально всё верно. А в новых версиях если проверить?
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4064
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

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

Сообщение jec » 25.09.2014 05:05:46

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

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

Сообщение Ustas » 02.07.2015 14:22:47

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


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 242

Рейтинг@Mail.ru