Delphi,默认按网格分组展开

Delphi, expand grouped by grid by default

我在 Delphi 中有一个网格程序,我需要添加此 属性 以展开网格中按数据分组的所有折叠。

procedure TProjectForm.dxDBGridEventDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
  inherited;
 DrawHighlight(ACanvas);
 TcxGridDbTableView.ViewData.Expand(True);
end;

我收到以下错误:

E2233 Property 'ViewData' inaccessible here

请提供帮助。而且我还需要删除此网格中分组数据的可折叠按钮。谢谢

您可以毫无问题地调用 cxGrid1DBTableView1.ViewData.Expand(True),只要您不在像您的 q 中那样的绘图事件中执行操作。但是,如果您使用下面的示例,则实际上不需要这样做。

这个很好用

procedure TDevexGroupingForm.FormCreate(Sender: TObject);
begin
  cxGrid1DBTableView1.Columns[2].GroupIndex := 0;  //  group by the 3rd column
  //  NOTE:  this step is only necessary if the table view has not been grouped at design-time

  cxGrid1DBTableView1.DataController.Options := cxGrid1DBTableView1.DataController.Options
   + [dcoGroupsAlwaysExpanded];  // this hides the +/- buttons of the grouped nodes

  cxGrid1DBTableView1.DataController.FocusedRowIndex := 0;  // focuses the first group
end;

注意:这已根据@Nil 的建议进行了更新。

  • 第一行,仅当 TableView 在设计时尚未分组时才需要设置列的 GroupIndex。

  • 设置 FocusedRowIndex 是可选的,具体取决于您希望 TableView 最初显示的方式

  • 所以其实+/-分组按钮的隐藏和所有顶层分组节点的展开都可以通过设置DataController选项一步实现属性包括 dcoGroupsAlwaysExpanded 选项。

顺便说一句,设置 DataController 选项以抑制 expand/collapse 按钮的绘制,源自文章 https://www.devexpress.com/Support/Center/Question/Details/Q105527/how-do-i-hide-the-expand-button-on-a-grid