Question: How to pass a value to the report?

Answer:

There are several methods to do this. First is to use global object frVariables (defined in FR_Class unit):

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


This code creates a new variable with 'My variable' name and value = 10. This method is best to pass static data to the report.

Second method is to use the TfrReport.OnGetValue event. You can use this method to pass dynamic data, i.e. data that changes from record to record.

1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.frReport1GetValue(ParName: String; var ParValue: Variant);
begin
if ParName = 'MyField' then
ParValue := Table1MyField.Value;
end;
 
Finally, third method is to define variable from dictionary programmatically:
 
with frReport1.Dictionary do
begin
Variables['MyVariable'] := 'CustomerData.Customers."CustNo"';
Variables['Another Variable'] := '10';
end;



(can I pass data from report to the program?)

Use frVariables object. If you write the following code in any script:

MyVariable := 10

then in your program you can use this code to retrieve MyVariable value:

1
v := frVariables['MyVariable'];