Question: Как передать значение из программы в отчет?

Answer:

Есть несколько способов. Первый: использовать глобальный объект frVariables (описан в FR_Class):

1
frVariables['My variable'] := 10;

 

создает переменную My variable со значением 10. Это способ подходит, если в отчет нужно передать статическую информацию (т.е. не меняющуюся в течение построения отчета).

Второй способ: использовать событие TfrReport.OnGetValue. Этот способ подходит для передачи в отчет информации, которая может меняться от записи к записи:

1
2
3
4
5
procedure TForm1.frReport1GetValue(ParName: String; var ParValue: Variant);
begin
if ParName = 'MyField' then
ParValue := Table1MyField.Value;
end;

 

И, наконец, третий способ: программно заполнить список переменных.

1
2
3
4
5
with frReport1.Dictionary do
begin
Variables['MyVariable'] := 'CustomerData.Customers."CustNo"';
Variables['Another Variable'] := '10';
end;

 

(а можно ли передать значение из отчета обратно в программу?)

Можно - используйте объект frVariables. Если в отчете написать в скрипте одного из объектов:

1
MyVariable := 10;

 

то в программе значение MyVariable можно достать так:
1
v := frVariables['MyVariable'];