Delphi 仅展开选定的组i DevExpress网格
我有一个e-DevExpress网格,我想在其中扩展一些包含特定值的组。 我有一个关于年和周的分组,我只希望将当前年和当前周作为默认值展开。Delphi 仅展开选定的组i DevExpress网格,delphi,datagrid,devexpress,grouping,Delphi,Datagrid,Devexpress,Grouping,我有一个e-DevExpress网格,我想在其中扩展一些包含特定值的组。 我有一个关于年和周的分组,我只希望将当前年和当前周作为默认值展开。 我一直在寻找一些提示,但还没有找到任何提示。你试过类似的东西吗 TableView1.ViewData.Records[0].Expand(true) 如果当前年份是第一个年份,则用正确的记录编号替换0,该问题有点“陈旧”,但由于您仍处于活动状态,我将回答它 为了简单起见,我只使用了两列:“年”和“人口”,因此分组仅按“年”进行 以下是示例应用程序的屏幕
我一直在寻找一些提示,但还没有找到任何提示。你试过类似的东西吗
TableView1.ViewData.Records[0].Expand(true)
如果当前年份是第一个年份,则用正确的记录编号替换0,该问题有点“陈旧”,但由于您仍处于活动状态,我将回答它
为了简单起见,我只使用了两列:“年”和“人口”,因此分组仅按“年”进行
以下是示例应用程序的屏幕截图:
过程TfrmMain.btnExpandClick(发送方:TObject);
常数
当前年份=1;
变量
i:整数;
开始
对于i:=0到tbvMain.ViewData.RowCount-1 do
开始
//检查一行是否为分组行。
如果不是tbvMain.ViewData.Rows[i].IsData,则
开始
//检查分组值是否是要展开的值。
如果tbvMain.ViewData.Rows[i].Values[clmYear.Index]=当前年份,则
tbvMain.ViewData.Rows[i].展开(False);
结束;
结束;
结束
过程TfrmMain.FormCreate(发送方:TObject);
变量
i:整数;
开始
//准备一些随机数据。
随机化;
tbvMain.DataController.RecordCount:=10;
对于i:=0到tbvMain.DataController.RecordCount-1 do
开始
tbvMain.DataController.Values[i,clmYear.Index]:=Random(3)+1;
tbvMain.DataController.Values[i,clmPopulation.Index]:=Random(100);
结束;
结束;
这里的关键是检查给定的行是否是数据。如果它不是数据,那么它是一个分组行,为此您需要使用tbvMain.ViewData.Rows[i].IsData
您可以找到完整的源代码。请注意,我使用了Delphi 2009和Dev Express build 56。在没有luckAre的情况下一直朝着这个方向看,你确定吗?您是否使用GroupIndex进行分组?在我所有的工作中!我一直在努力,但我就是无法破解这个-无论我怎么做它都不会起作用。我完全忘记了这个问题:-)我会尝试你的代码并返回确定的东西,我希望它能帮上忙:-)对不起,我之前没有回来-最近发生了很多事情。你有没有做过类似的事情,比如有两个分组列,然后只折叠第二个?View1.ViewData.Collapse可折叠所有内容,但我想控制要折叠的列。很抱歉,我不知道如何执行此操作。也许你应该在devexpress论坛上提问(他们有很好的支持),或者在这里提出另一个问题,用更好的例子说明你正在努力实现的目标。
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;