特定の値を含むいくつかのグループを展開したいeDevExpressグリッドがあります。年と週にグループ化していますが、デフォルトとして現在の年と現在の週のみを拡張したいと思います。私はいくつかのヒントを探していましたが、まだ見つかりませんでした。
2 に答える
質問は「少し」古いですが、あなたはまだアクティブなので、私はそれに答えます。
簡単にするために、「Year」と「Population」の2つの列のみを使用したため、グループ化は「Year」のみで行われます。
サンプルアプリケーションのスクリーンショットは次のとおりです。
- 初期データが表示されます。
- 「年」列を使用して行をグループ化しています。
- 私は「年」=1でグループを拡大していますが、現在の年=1と想定しています。
procedure TfrmMain.btnExpandClick(Sender: TObject);
const
CurrentYear = 1;
var
i: Integer;
begin
for i := 0 to tbvMain.ViewData.RowCount - 1 do
begin
// Check if a row is a grouping row.
if not tbvMain.ViewData.Rows[i].IsData then
begin
// Check if a grouping value is the one that you want expanded.
if tbvMain.ViewData.Rows[i].Values[clmYear.Index] = CurrentYear then
tbvMain.ViewData.Rows[i].Expand(False);
end;
end;
end;
procedure TfrmMain.FormCreate(Sender: TObject);
var
i: Integer;
begin
// Prepare some random data.
Randomize;
tbvMain.DataController.RecordCount := 10;
for i := 0 to tbvMain.DataController.RecordCount - 1 do
begin
tbvMain.DataController.Values[i, clmYear.Index] := Random(3) + 1;
tbvMain.DataController.Values[i, clmPopulation.Index] := Random(100);
end;
end;
ここで重要なのは、指定された行がデータであるかどうかを確認することです。データでない場合は、グループ化行です。これには、次を使用する必要があります。tbvMain.ViewData.Rows[i].IsData
完全なソースコードはここにあります。Delphi2009とDevExpressビルド56を使用したことに注意してください。
このようなことを試してみましたか?
TableView1.ViewData.Records[0].Expand(true)
現在の年が最初の場合は、0を正しいレコード番号に置き換えます