我有一个 DevExpress 网格,我想在其中扩展一些包含特定值的组。我对年和周进行了分组,我希望仅将当前年份和当前周扩展为默认值。我一直在寻找一些提示,但还没有找到任何提示。
2 回答
这个问题“有点”老了,但既然你还很活跃,我会回答的。
为简单起见,我只使用了两列:“年份”和“人口”,因此分组仅按“年份”。
这是示例应用程序的屏幕截图:
- 您会看到一个初始数据。
- 我正在使用“年”列对行进行分组。
- 我正在扩展“年份”= 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
你可以在这里找到完整的源代码。请注意,我使用的是 Delphi 2009 和 Dev Express build 56。
你有没有尝试过这样的事情?
TableView1.ViewData.Records[0].Expand(true)
如果当前年份是第一年,否则将 0 替换为正确的记录号