0

特定の値を含むいくつかのグループを展開したいeDevExpressグリッドがあります。年と週にグループ化していますが、デフォルトとして現在の年と現在の週のみを拡張したいと思います。私はいくつかのヒントを探していましたが、まだ見つかりませんでした。

4

2 に答える 2

2

質問は「少し」古いですが、あなたはまだアクティブなので、私はそれに答えます。

簡単にするために、「Year」と「Population」の2つの列のみを使用したため、グループ化は「Year」のみで行われます。

サンプルアプリケーションのスクリーンショットは次のとおりです。

グループ化の例

  1. 初期データが表示されます。
  2. 「年」列を使用して行をグループ化しています。
  3. 私は「年」=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を使用したことに注意してください。

于 2015-04-03T07:05:13.967 に答える
0

このようなことを試してみましたか?

TableView1.ViewData.Records[0].Expand(true)

現在の年が最初の場合は、0を正しいレコード番号に置き換えます

于 2012-08-15T09:30:38.667 に答える