Tutorial_en.odt

(13 KB) Pobierz

LazReport, local variables and StringGrid

 

This tutorial tryes to explain how to send local variables and data from a StringGrid to a report build with Lazreport and Lazarus.

To send a local variable to a LazReport’s report, do as follows:

-                      Create a variable in LazReport and do not assign a value.

-                      This can be done at the menu file > variable list > variable in LazReport

-                      Now create a variable and do not assign a value.

 

1)                  Configure the event OnGetValue from the TfrReport  to assign the vaue of our local variable to the LazReport value.

-                      If our local variable is called  var_local and our report’s variable is called  var_report, on the event OnGetValue whe should write:

 

If ParName = ‘var_report’ then

  ParValue := var_local;

 

To send data from a TStringGrid to LazReport, we should use a component called TfruserDataset. This component will represent our rows on the TStringGrid to be represented on the report. Do as follows:

1)                  Add a TfrUserDataset to the form and configure it on the property Dataset from the  TfrReport.

2)                  Create a longint variable with a public or private scope  under the form we are working with, for example FRow. This variable will be used to reference the diferent rows from our StringGrid.

3)                  Then we must size our  TfruserDataset, do as follows:

-                      Configure the number of rows, via the OnCheckEOF event:

procedure TForm1.frUserDataSet1CheckEOF(Sender: TObject; var Eof: Boolean);

begin

   Eof := FRow > StringGrid1.RowCount - 1;

end;

-                      This way we define how many row we are working with. The RowCount property from a StringGrid shows the numbers of rows it contains (- 1 because it starts from 0).

4)                  Now we should define from wich row to start. Usually row 0 is used for column captions, so let’s start from 1 .

-                      Configure the OnFirst event from the TfrUserDataSet:

procedure TForm1.frUserDataSet1First(Sender: TObject);

begin

  FRow := 1;

end;

5)                  Configure the OnNext event from the TfrUserDataSet:

procedure TForm1.frUserDataSet1Next(Sender: TObject);

begin

   Inc(FRow);

end;

6)                  That’s it with the TfrUserDataSet. Now let’s prepare the TfrReport to recibe data.

-                      Create a variable inside the report for each field we want to recibe from the StringGrid.

-                      Add a Master Data band, and add text boxes as needed, one for each variable.

-                      Configure th OnGetValue  event(as explained early on this tutorial) to assign the fields of the StringGrid, using the Cells property (column, row).

procedure TForm1.frReport1GetValue(const ParName: String; var ParValue: Variant

  );

begin

  if ParName = 'variable_1' then

    ParValue := StringGrid1.Cells[1, FRow];

   

  if ParName = 'variable_2' then

    ParValue := StringGrid1.Cells[2, FRow];

end; 

That’s it! There is a small example with this tutorial to demonstrate how to do this. If someone finds this tutorial usefull, write me at german.basisty@gmail.com

Enjoy!

Zgłoś jeśli naruszono regulamin