テストデータのデータ型を作成します。
type
TSampleData = record
Val1: string;
Val2: string;
Val3: string;
constructor Create(AVal1, AVal2, AVal3: string);
end;
constructor TSampleData.Create(AVal1, AVal2, AVal3: string);
begin
Self.Val1 := AVal1;
Self.Val2 := AVal2;
Self.Val3 := AVal3;
end;
フォームのOnCreateイベントで表示するリストのデータを作成します。
type
TForm1 = class(TForm)
…
private
{ Private 宣言 }
FList: TList<TSampleData>;
…
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FList := TList<TSampleData>.Create;
FList.Add(TSampleData.Create('A列1行', 'B列1行', 'C列1行'));
FList.Add(TSampleData.Create('A列2行', 'B列2行', 'C列2行'));
FList.Add(TSampleData.Create('A列3行', 'B列3行', 'C列3行'));
FList.Add(TSampleData.Create('A列4行', 'B列4行', 'C列4行'));
FList.Add(TSampleData.Create('A列5行', 'B列5行', 'C列5行'));
FList.Add(TSampleData.Create('A列6行', 'B列6行', 'C列6行'));
FList.Add(TSampleData.Create('A列7行', 'B列7行', 'C列7行'));
FList.Add(TSampleData.Create('A列8行', 'B列8行', 'C列8行'));
FList.Add(TSampleData.Create('A列9行', 'B列9行', 'C列9行'));
end;
フォームにTButtonとTfrxReportとTfrxUserDataSetを配置します。
frxUserDataSet1コンポーネントのFieldsプロパティに変数名を入力します。
今回は「Val1」「Val2」「Val」の3つの変数を登録しました。
フォームに配置したfrxReport1コンポーネントをダブルクリックします。
FastReportデザイナーが表示されます。
メニューから「Report」→「Data」を選択します。
使用するデータセットを選択します。
ここではfrxUserDataSet1をチェックして、OKボタンを押します。
Data TreeウィンドウのDataタブに選択したデータセットが表示されます。
MasterDataのデータバインドを配置します。
使用するデータセットを聞かれますので、frxUserDataSet1を選択して、OKボタンを押します。
MasterDataのデータバインドが配置されました。
Data TreeウィンドウのDataタブにあるデータセットから変数を選択して、MasterDataのデータバインド上にドラッグアンドドロップします。
「Val1」「Val2」「Val」を配置します。
FastReportデザイナーを閉じます。
Button1コンポーネントのOnClickイベントを記述します。
procedure TForm1.Button1Click(Sender: TObject);
begin
// 要素数を設定する
frxUserDataSet1.RangeEnd := reCount;
frxUserDataSet1.RangeEndCount := FList.Count;
// 帳票を表示する
frxReport1.ShowReport();
end;
frxUserDataSet1コンポーネントのOnGetValueイベントを記述します。
表示するリストの値を変数Valueに設定します。
procedure TForm1.frxUserDataSet1GetValue(const VarName: string;
var Value: Variant);
begin
if VarName = 'Val1' then
Value := FList[frxUserDataSet1.RecNo].Val1
else if VarName = 'Val2' then
Value := FList[frxUserDataSet1.RecNo].Val2
else if VarName = 'Val3' then
Value := FList[frxUserDataSet1.RecNo].Val3;
end;
アプリケーションを実行して、Button1をクリックします。