숫자 열에 런타임에 요약 바닥 글을 만드는 코드가 있지만 표시 할 그룹 요약 결과를 얻을 수 없습니다. 나는 How to create group summaries at runtime 및 How to set group summary values 및 How can create summary footer on runtime? 검토 한하지만 난 런타임 오류 타격 해요 :런타임시 TcxGrid GroupSummaries를 생성하는 Delphi 코드
EcxInvalidDataControllerOperation with message 'RecordIndex out of range'
그리드 렌더링 할 때.
이 코드는 모든 TcxGridDBTableView를 허용하므로 기존 Delphi 폼에 넣기가 매우 쉽습니다.
procedure SummaryGroup(ASummary: TcxDataSummary; AColumn: TcxGridDBColumn;
AKind: TcxSummaryKind; AFormat: string);
var
sumGroup: TcxDataSummaryGroup;
link: TcxGridTableSummaryGroupItemLink; //TcxDataSummaryGroupItemLink;
item: TcxGridDBTableSummaryItem;
begin
AColumn.Summary.FooterKind := AKind;
AColumn.Summary.FooterFormat := AFormat;
sumGroup := ASummary.SummaryGroups.Add;
link := sumGroup.Links.Add as TcxGridTableSummaryGroupItemLink;
link.Column := AColumn;
item := sumGroup.SummaryItems.Add as TcxGridDBTableSummaryItem;
item.Column := AColumn;
item.Kind := AKind;
item.Position := spGroup;
item.Format := AColumn.Summary.FooterFormat;
end;
procedure AutoAwesum(AView: TcxGridDBTableView);
var
summary: TcxDataSummary;
summing: Boolean;
i: Integer;
dc: TcxGridDBDataController;
col: TcxGridDBColumn;
begin
dc := AView.DataController;
summing := False;
summary := dc.Summary;
summary.BeginUpdate;
try
summary.SummaryGroups.Clear;
dc.BeginFullUpdate;
try
dc.GridView.ClearItems;
dc.CreateAllItems;
for i := 1 to AView.ColumnCount - 1 do
begin
col := AView.Columns[i];
case col.DataBinding.Field.DataType of
ftSmallint, ftInteger, ftWord, ftLargeint, ftAutoInc,
ftLongWord, ftShortint:
begin
summing := true;
SummaryGroup(summary, col, skSum, '#');
end;
ftFloat, ftBCD, ftFMTBcd, ftExtended, ftSingle:
begin
summing := true;
SummaryGroup(summary, col, skSum, '#.##');
end;
ftCurrency:
begin
summing := true;
SummaryGroup(summary, col, skSum, '$#.##');
end;
end;
end;
dc.DataModeController.GridMode := not summing;
AView.OptionsView.Footer := summing;
AView.OptionsView.GroupFooterMultiSummaries := summing;
AView.OptionsView.GroupFooters := gfVisibleWhenExpanded;
finally
dc.EndFullUpdate;
end;
finally
summary.EndUpdate;
end;
end;
무엇이 누락 되었습니까? 감사.
예외를 생성하는 행은 무엇입니까? –
그것은 내 코드에서 발생하지 않습니다. 그것은 cxGrid 런타임에서 TcxCustomDataController.CheckRecordRange에 있습니다. –
그런 다음 스택 추적을보고 예외가 트리거되는 위치를 확인합니다. 예외가 실제로 자신의 코드를 추적 할 수없는 경우 대신 공급 업체에 버그 보고서를 제출해야합니다. –