Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 仅展开选定的组i DevExpress网格_Delphi_Datagrid_Devexpress_Grouping - Fatal编程技术网

Delphi 仅展开选定的组i DevExpress网格

Delphi 仅展开选定的组i DevExpress网格,delphi,datagrid,devexpress,grouping,Delphi,Datagrid,Devexpress,Grouping,我有一个e-DevExpress网格,我想在其中扩展一些包含特定值的组。 我有一个关于年和周的分组,我只希望将当前年和当前周作为默认值展开。 我一直在寻找一些提示,但还没有找到任何提示。你试过类似的东西吗 TableView1.ViewData.Records[0].Expand(true) 如果当前年份是第一个年份,则用正确的记录编号替换0,该问题有点“陈旧”,但由于您仍处于活动状态,我将回答它 为了简单起见,我只使用了两列:“年”和“人口”,因此分组仅按“年”进行 以下是示例应用程序的屏幕

我有一个e-DevExpress网格,我想在其中扩展一些包含特定值的组。 我有一个关于年和周的分组,我只希望将当前年和当前周作为默认值展开。
我一直在寻找一些提示,但还没有找到任何提示。

你试过类似的东西吗

TableView1.ViewData.Records[0].Expand(true)
如果当前年份是第一个年份,则用正确的记录编号替换0,该问题有点“陈旧”,但由于您仍处于活动状态,我将回答它

为了简单起见,我只使用了两列:“年”和“人口”,因此分组仅按“年”进行

以下是示例应用程序的屏幕截图:

  • 您会看到一个初始数据
  • 我使用“年”列对行进行分组
  • 我用“年”=1扩展组,我假设当前年=1
  • 
    过程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;