Delphi 更改使用cxGrid生成的图形中的步骤

Delphi 更改使用cxGrid生成的图形中的步骤,delphi,devexpress,tcxgrid,Delphi,Devexpress,Tcxgrid,我用DevExpress的cxGrid制作了一个图表,在X轴上我有一个日期 但是,当图表中有大量数据时,这些日期被削减到只有2或4位数 如何更改它,使X轴仅在每5或10个值处显示文本?您应该在应用程序中实现分页。您可以通过覆盖网格的ChartView.DataController的OnDataChanged和OnFilterRecord来实现这一点: aChartView.DataController.OnDataChanged := cvChartDataControllerDataC

我用DevExpress的cxGrid制作了一个图表,在X轴上我有一个日期 但是,当图表中有大量数据时,这些日期被削减到只有2或4位数


如何更改它,使X轴仅在每5或10个值处显示文本?

您应该在应用程序中实现分页。您可以通过覆盖网格的ChartView.DataController的OnDataChanged和OnFilterRecord来实现这一点:

   aChartView.DataController.OnDataChanged  := cvChartDataControllerDataChanged;
   aChartView.DataController.OnFilterRecord := cvChartDataControllerFilterRecord;
要点是使用OnFilterRecord一次只显示有限数量的记录。这会让你的图表看起来很好看,否则你会得到太多的数据点。最重要的一个是onfilter记录。下面是一个例子:

procedure TSomeGrid.cvChartDataControllerFilterRecord(ADataController: TcxCustomDataController; ARecordIndex: Integer; var Accept: Boolean);
begin
// inspect the number of all records
   FNoOfRecords := ADataController.RecordCount;
//FStartRecordNo and FEndRecordNo are relative to the FCurrentPageNo
//calculated elsewhere OnDataChanged
   if FCurrentPageNo > 0 then
      Accept := (ARecordIndex >= FStartRecordNo) and (ARecordIndex <= FEndRecordNo)
   else
      Accept := ARecordIndex < FMaxChartRecords;
end;
procedure TSomeGrid.cvChartDataControllerFilterRecord(ADataController:TcxCustomDataController;ARecordIndex:Integer;var Accept:Boolean);
开始
//检查所有记录的编号
FNoOfRecords:=ADataController.RecordCount;
//FStartRecordNo和FEndRecordNo与FCurrentPageNo相关
//其他地方计算的数据已更改
如果FCurrentPageNo>0,则

接受:=(ARecordIndex>=FStartRecordNo)和(ARecordIndex我想这更容易用一个示例屏幕快照来回答。我知道我可以在JVCL JvChart中做到这一点,所以我确信cxGrid图表中肯定有类似的属性。我添加了一个显示问题的图像。如果这导致一些数据没有显示在图表中,这不是一个选项。必须显示所有记录,以便结束用户获得最佳图片。我就是这样处理的。每英寸只有这么多像素。但如果这不是您需要的,那么我的方法不适合您。您需要的是以某种方式覆盖x轴的OnGetText或类似内容。我确实认为DevXpress用户组可能更适合这个问题。他们回答了任何问题我在2-4小时内就遇到了一些问题,通常还有代码示例。他们的支持非常好,所以也许你应该尝试一下。你的方法可能有用,但我在弄清楚如何使用它时遇到了一些问题。如果有人能告诉我如何使用,我的表单示例位于www.hugopedersen.dk//u guest/cxGridGraph.zip文件中。文件名为事实上,www.hugopedersen.dk/_guest/grid.zipI很抱歉,我没有时间检查您的源代码。但是如果您能在这里详细说明您的问题所在,我可能会有所帮助。图表视图和任何其他网格视图一样,可能会被过滤以仅显示可用数据的一部分。您可以通过覆盖有关当前页面。假设您位于第一页,例如,接受:=(ARecordIndex>0)和(ARecordIndex)