【问题标题】:Delphi, expand grouped by grid by defaultDelphi,默认按网格展开分组
【发布时间】:2017-09-22 13:22:41
【问题描述】:

我在 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

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

【问题讨论】:

  • Sender.ViewData.Expand(True);?如果无法访问TcxGridDbTableView(Sender).ViewData.Expand(True);.
  • @Victoria,谢谢你,当我尝试这个时,我遇到了访问冲突并且它没有扩展..
  • @Victoria 最后一个也不起作用。但它没有给我任何错误,它只是不起作用..
  • 我认为你可能会试图在 DrawCell 事件中执行此操作,因为它会强制重新绘制。另外,“删除可折叠按钮”是什么意思?您的意思是要阻止绘制每个组的展开/折叠按钮吗?
  • @MartynA 我真的不知道最好的方法。我对德尔福很陌生。我需要的是按日期对数据进行分组,但它应该默认展开,展开/折叠按钮应该隐藏,它不应该处于活动状态..

标签: delphi devexpress tcxgrid


【解决方案1】:

您可以毫无问题地致电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 选项来抑制展开/折叠按钮的绘制,源自文章https://www.devexpress.com/Support/Center/Question/Details/Q105527/how-do-i-hide-the-expand-button-on-a-grid

【讨论】:

  • 对不起,我感觉很笨。它说 cxGrid1DBTableView1 未声明。我的网格是 TxcGrid,结构如下: cxGrid7 -> cxGrid7Level1 和 dxDBGridEvents 。你能帮我看看语法吗?
  • @AMAM:在 IDE 的 cxGrid 中,右下角,应该有一个类似 cxGrid1Level1 的标签。网格视图组件的名称在它的右侧。我的代码中引用了我的代码 - 只需替换您的代码即可。
  • 非常感谢您的努力,这是正确的,我只需要接受 Nil 的回答,因为对于我作为一个初学者来说,我可以更好地理解它。谢谢
  • @AMAM:不用担心,您应该始终接受最适合您的答案。无论如何,祝你好运 cxGrid - 它可以做的一些事情有点令人惊叹,但是找出如何在代码中做的事情可以很容易地通过它的视觉设计师来完成,这可能是一场艰苦的斗争。
  • @AM AM 你能接受马丁斯的回答吗?这包含更多内容,包括对您有帮助的正确答案。
猜你喜欢
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2015-03-02
  • 1970-01-01
  • 2023-04-07
  • 2012-12-20
  • 1970-01-01
相关资源
最近更新 更多