FastReportでDelphiのリストや配列の値を表示するチュートリアル

テストデータのデータ型を作成します。

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を配置します。

001

frxUserDataSet1コンポーネントのFieldsプロパティに変数名を入力します。

002

今回は「Val1」「Val2」「Val」の3つの変数を登録しました。

003

フォームに配置したfrxReport1コンポーネントをダブルクリックします。
FastReportデザイナーが表示されます。

004

メニューから「Report」→「Data」を選択します。

005

使用するデータセットを選択します。
ここではfrxUserDataSet1をチェックして、OKボタンを押します。

006

Data TreeウィンドウのDataタブに選択したデータセットが表示されます。

007

MasterDataのデータバインドを配置します。

008

使用するデータセットを聞かれますので、frxUserDataSet1を選択して、OKボタンを押します。

009

MasterDataのデータバインドが配置されました。

010

Data TreeウィンドウのDataタブにあるデータセットから変数を選択して、MasterDataのデータバインド上にドラッグアンドドロップします。

011

「Val1」「Val2」「Val」を配置します。

012

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をクリックします。

013

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください