unit mainform;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, LR_Class,
LR_DSet, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
rpt: TfrReport;
usrdata: TfrUserDataset;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure rptGetValue(const ParName: String; var ParValue: Variant);
private
sl: TStringList;
procedure DesignReport;
public
{ public declarations }
end;
var
Form1: TForm1;
implementation
uses
Printers; // for page orientation enums
{$R *.lfm}
{ TForm1 }
procedure TForm1.rptGetValue(const ParName: String; var ParValue: Variant);
begin
if ParName = 'element' then
begin
writeln('rptGetValue'); // only appears once in console output, but we have 10 "data records"??
ParValue := sl[usrdata.RecNo];
end;
end;
{ This report is designed 100% in code - no report designer }
procedure TForm1.DesignReport;
var
Page: TfrPage;
TitleBand: TfrBand;
DataBand: TfrBand;
Memo: TfrMemoView;
begin
{ clear the report }
rpt.Clear;
{ add dataset to list of datasets accessible in report }
// rpt.Dataset := usrdata;
{ add page }
Page := rpt.Pages.Add();
Page.PgSize := 9; // that should equate to A4 I assume
{ create a unique name }
Page.CreateUniqueName;
{ add report title band}
TitleBand := TfrBand.Create(btReportTitle, Page);
TitleBand.CreateUniqueName;
{ only "Top" coordinate and height of TitleBand need setting both in pixels }
TitleBand.Top := 0;
TitleBand.Height := 20;
{ add object to report title band }
Memo := TfrMemoView.Create(Page);
Memo.Parent := TitleBand;
Memo.CreateUniqueName;
Memo.Memo.Text := 'Hello LazReport!';
Memo.Height := 20;
{ this object will be stretched to band's width }
Memo.AutoSize := True;
// Memo.Align := baWidth;
{ add masterdata band }
DataBand := TfrBand.Create(btMasterData, Page);
DataBand.CreateUniqueName;
DataBand.DataSet := usrdata;
{ "Top " should be greater than previously added band's top + height }
DataBand.Top := 25;
DataBand.Height := 20;
{ add object on masterdata }
Memo := TfrMemoView.Create(Page);
Memo.Parent := DataBand;
Memo.CreateUniqueName;
{ connect to data }
// Memo.DataSet := usrdata;
// Memo.DataField := 'CustNo';
Memo.SetBounds(0, 0, 100, 20);
Memo.Memo.Text := '[element]';
Memo.AutoSize := True;
{ align text to object's right margin }
// Memo.HAlign := haRight;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
sl := TStringList.Create;
sl.Add('1');
sl.Add('2');
sl.Add('3');
sl.Add('4');
sl.Add('5');
sl.Add('6');
sl.Add('7');
sl.Add('8');
sl.Add('9');
sl.Add('10');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
usrdata.RangeEnd := reCount;
usrdata.RangeEndCount := sl.Count;
DesignReport;
// rpt.LoadFromFile('stringlist.lrf');
rpt.ShowReport;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
sl.Free;
end;
end.