【发布时间】:2012-08-15 04:11:00
【问题描述】:
我有一个 DevExpress 网格,我想在其中扩展一些包含特定值的组。 我对年和周进行了分组,我只想将当前年份和当前周扩展为默认值。 我一直在寻找一些提示,但还没有找到。
【问题讨论】:
标签: delphi datagrid devexpress grouping
我有一个 DevExpress 网格,我想在其中扩展一些包含特定值的组。 我对年和周进行了分组,我只想将当前年份和当前周扩展为默认值。 我一直在寻找一些提示,但还没有找到。
【问题讨论】:
标签: delphi datagrid devexpress grouping
这个问题“有点”老了,但既然你仍然活跃,我会回答它。
为简单起见,我只使用了两列:“年份”和“人口”,因此仅按“年份”分组。
这是一个示例应用程序的屏幕截图:
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
您可以找到完整的源代码here。请注意,我使用的是 Delphi 2009 和 Dev Express build 56。
【讨论】:
你尝试过这样的事情吗?
TableView1.ViewData.Records[0].Expand(true)
如果当前年份是第一年,否则将0替换为正确的记录号
【讨论】: