Print cxgrid sorted data

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure Print();
var
  AscFields, DescFields, S: string;
  IndexPrint: string;
  I: integer;
  Index: integer;
  cds: TClientDataSet;
begin
  S := '';
  AscFields := '';
  DescFields := '';
  IndexPrint := 'GoodsSaleReportIndex';

  if (cxgrdbtvGoodsSaleReport.DataController.DataSource.DataSet is TClientDataSet) then
  begin
    Cds := cxgrdbtvGoodsSaleReport.DataController.DataSource.DataSet as TClientDataSet;
    for I := 0 to cxgrdbtvGoodsSaleReport.SortedItemCount - 1 do
    begin
      Index := cxgrdbtvGoodsSaleReport.SortedItems[I].Index;
      S := cxgrdbtvGoodsSaleReport.Columns[Index].DataBinding.Field.FieldName + ';';
      AscFields := AscFields + S;
      if cxgrdbtvGoodsSaleReport.SortedItems[I].SortOrder = soDescending then
        DescFields := DescFields + S ;
    end;

    cds.IndexDefs.Update;
    if cds.IndexDefs.IndexOf(IndexPrint) >= 0 then
    begin
      cds.DeleteIndex(IndexPrint);
    end;
    cds.AddIndex(IndexPrint, AscFields, [], DescFields);
    cds.IndexName := IndexPrint;
  end;
  self.PrintReport(); 
end;
记录平时瞎折腾遇到的各种问题, 方便查找
使用 Hugo 构建
主题 Stack 3.29.0Jimmy 设计