Excelやその他の形式へのエクスポート機能
DBGridEhは、グリッドデータをさまざまなファイル形式にエクスポートする機能を提供しています。そのためには、ユニットDBGridEhImpExpをuses節に追加する必要があります。主なエクスポートクラスは以下の通りです。
- TDBGridEhExportAsText:プレーンテキスト形式で保存
- TDBGridEhExportAsUnicodeText:Unicode対応のテキスト出力
- TDBGridEhExportAsCSV:カンマ区切り形式(CSV)
- TDBGridEhExportAsHTML:Webブラウザで表示可能なHTML形式
- TDBGridEhExportAsRTF:リッチテキスト形式
- TDBGridEhExportAsXLS:従来型Excelブック(.xls)
- TDBGridEhExportAsXlsx:XMLベースのExcelファイル(.xlsx)
以下は、DBGridEhの内容をXLSX形式でエクスポートするコード例です。
procedure TForm1.ExportToExcelClick(Sender: TObject);
var
ExportPath: string;
begin
GetDir(0, ExportPath);
ExportPath := ExportPath + '\Report.xlsx';
ExportDBGridEhToXlsx(DBGridEh, ExportPath, []);
ShowMessage('エクスポートが完了しました。');
end;
複数階層のヘッダー構造の実装
複数行のヘッダーを使用するには、TitleParams.MultiTitleプロパティをTrueに設定します。共通の上位ヘッダーを持つ列は、フィールド名にパイプ記号|を使って定義します。
// 「顧客情報」の下に「名」と「姓」を配置
DBGridEh.Columns[0].Title.Caption := 'Customer|FirstName';
DBGridEh.Columns[1].Title.Caption := 'Customer|LastName';
この記法により、「Customer」が上段の統合見出しとなり、それぞれの項目が下段に表示されます。
フッターでの集計処理
各列の合計、平均、件数などの集計をフッター行に表示できます。まずFooterRowCountを1以上に設定し、対象列のFootersプロパティを編集します。
- ValueType:
fvtSum:数値の合計fvtCount:レコード件数fvtMax/fvtMin:最大値・最小値fvtFieldValue:指定フィールドの値を集計(FieldNameにフィールド名を指定)fvtStaticText:固定テキストの表示
- DisplayFormat:数値フォーマット(例:
'#,##0.00')
集計を有効にするには、DBGridEh.SumList.Active := True;を事前に設定してください。
チェックボックス列の使用
ブーリアン値またはBit型のフィールドをチェックボックスとして表示できます。対象列のCheckBoxesプロパティをTrueに設定し、対応するデータセットの該当フィールドがBooleanまたはTFieldType.ftBoolean型であることを確認します。
with DBGridEh.Columns[3] do
begin
FieldName := 'IsConfirmed';
CheckBoxes := True;
end;
マスターディテール形式のサブグリッド表示
親テーブルと子テーブルを階層的に表示することが可能です。手順は以下の通りです。
- 主グリッド(DBGridEh1)に主データ(例:注文一覧)をバインド。
RowDetailPanel.Active := True;を設定して詳細パネルを有効化。- DBGridEh1の
RowDetailDataイベント内で、動的にサブグリッド(DBGridEh2)を生成し、AlginをalClientに設定。 - 子グリッドには子データ(例:注文明細)を接続。通常、MemTableEh経由でADOQuery2から取得。
- 子側のMemTableEh2において、
MasterFieldsとDetailFieldsを設定し、外部キー関係を明示。
セル値の取得方法
ユーザーがクリックしたセルの内容を取得するには、CellClickイベントを使用します。
procedure TForm1.DBGridEh1CellClick(Column: TColumnEh);
begin
// クリックされたセルの表示テキスト
ShowMessage('値: ' + Column.DisplayText);
// 特定列(例:単価)の値を取得
if Assigned(DBGridEh1.DataSource.DataSet.FieldByName('Price')) then
ShowMessage('単価: ' + DBGridEh1.DataSource.DataSet.FieldByName('Price').DisplayText);
end;
行番号インジケータの表示
左端にレコード番号を表示することで、現在の行位置を視覚的に把握できます。
DBGridEh1.IndicatorOptions := [gioShowRowIndicatorEh, gioShowRecNoEh];
// 10行ごとに番号を表示(間引き表示)
DBGridEh1.IndicatorParams.RecNoShowStep := 10;
行の背景色を交互に変更
読みやすさを向上させるため、奇数行と偶数行で背景色を変えることができます。
DBGridEh1.OddRowColor := clInfoBk; // 奇数行の色
DBGridEh1.EvenRowColor := $00FFF8F8; // 偶数行の色(薄い青系)
DBGridEh1.AlternatingRowColors := True;
列のフリーズ(固定)機能
スクロール時にも常に表示させたい列(例:IDや名前)を左側に固定できます。
// 最初の2列を固定
DBGridEh1.FrozenCols := 2;
縦方向の重複値を省略表示
連続する同じ値を持つセルについて、最初の1行目のみ表示し、以降は空白とする設定が可能です。これにより、データのグループ構造が明確になります。
// 列単位で設定
DBGridEh1.Columns[0].ShowGroupTree := True;
// または、データソート後に自動で同値非表示
DBGridEh1.OptionsEh := DBGridEh1.OptionsEh + [dghAutoSortMarking];