タイトル

執筆:2023.08.30
編集:2023.08.30


Lazarus lazreport の 超絶シンプルサンプル1 です。


Delphi11を起動して パレットにreport検索してもでてこないですね。現行バージョンはレポート付属していないのでしょうか?
ということでレポートが付属されているLazarusへ 全部もしきはレポート部分だけDLLで移行しないといけないケースが発生しないとは限らないため使い方を確認することにしました。

Delphiからの移行でlazreportの使い方がわからないであきらめたというページを目にしたので
lazreportの超絶シンプルなサンプルを紹介します。

テンプレート形式でファイルを保存するようなので Raveレポート に似ていますね。

以下は超シンプルなサンプルです。

(1) 新規プロジェクトを作成してください
※事前にlazreportを有効にしてパレットにインストールしておいてください。

(2) TButton 2個, TfrReport をフォームに配置します。

(3)フォームに配置した frReport1 を右クリックして「デザインレポート」を呼び出してください。

テンプレートをフォームに埋め込む場合は、 frReport1.StoreInForm をtrueにしてから次の作業をしましょう。
その場合は、コードのfrReport1.LoadFromFileの読み込み部分は必要ありません。

(3-1) オブジェクトインスペクタを表示します。
[レポート編集画面です]
Tools : Toolbars : Object inspector をチェックして表示させます。
オブジェクトを右クリックしてもこの項目はでてこないため、これがないと話になりません。
使い方がわからないという記事を見かけたので多分これが原因でしょう。

(3-2) 左の縦ツールバーの「矢印のすぐ下」の 「rectangle object」挿入をクリックして右の画面に配置します。

(3-3) Closeを選択して、テンプレートを保存してください。
そのまま保存すると'Untitled.lrf'という名前になります。

(4) フォームのボタンをクリックします。コードを書き込んでください。

(5) frReport1のイベントOnBeginDocをクリックします。コードを書き込んでください。

procedure TForm1.Button1Click(Sender: TObject);
begin // プレビュー
frReport1.LoadFromFile(ExtractFileDir(Application.ExeName)
+ DirectorySeparator + 'Untitled.lrf');
frReport1.ShowReport;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin // 印刷
frReport1.LoadFromFile(ExtractFileDir(Application.ExeName)
+ DirectorySeparator + 'Untitled.lrf');
// プリンタの設定を開きたい場合はここに処理を加える
if frReport1.PrepareReport() then
frReport1.PrintPreparedReport('1', 1); // ページ範囲, 印刷数
end;

procedure TForm1.frReport1BeginDoc;
var
AfrObject : TfrObject;
begin
AfrObject := frReport1.Pages[0].FindObject('Memo1');
if Assigned(AfrObject) then
AfrObject.Memo.Text := 'こんにちは';
end;

準備完了です。

実行してボタンをクリックしてください。
レポートの出来上がりです。

簡単でしたね!

テンプレートを埋め込む場合は
・frReport1.StoreInForm をtrue
・リソースとして保存してStreamからロード
などの方法があります。

組み込みのプレビューが 英語表記なので、
lazreport\source\languages\に日本語に該当するlr_const.ja.poがないためです。
いつの間にか数年前?数十年前?から「プチモンテ Delphi・Lazarusの掲示板」がIDEの翻訳担当しているそうなので
日本語のLazarus掲示板に注文出せばだれか暇人が翻訳してコミットすると思います

組み込みのプレビュー
・英語表記
・文字サイズとアイコンがかなり小さい
・デザインが古臭い 時代を感じる
ので自分でプレビューフォーム作ったほうがいいような気もします。