unit U_TatClothStkHZList;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage,
  cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView,
  cxGridBandedTableView, cxGridDBBandedTableView, cxGridLevel, cxClasses,
  cxControls, cxGridCustomView, cxGridDBTableView, cxGrid, StdCtrls, ComCtrls,
  ExtCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, ADODB, DBClient,
  cxDropDownEdit, cxCheckBox, RM_Common, RM_Class, RM_e_Xls, RM_Dataset,
  RM_System, RM_GridReport, Menus, cxCalendar, MovePanel, Math, Clipbrd,
  cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, cxTextEdit, dxSkinsCore,
  dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, U_BaseList, cxPC,
  System.StrUtils, dxScrollbarAnnotations, dxSkinWXI;

type
  TfrmTatClothStkHZList = class(TfrmBaseList)
    ToolBar1: TToolBar;
    TBRafresh: TToolButton;
    TBExport: TToolButton;
    TBClose: TToolButton;
    Panel1: TPanel;
    ADOQueryCmd: TADOQuery;
    ADOQueryMain: TADOQuery;
    ADOQueryTemp: TADOQuery;
    DS_1: TDataSource;
    GPM_1: TcxGridPopupMenu;
    Label2: TLabel;
    BegDate: TDateTimePicker;
    EndDate: TDateTimePicker;
    CDS_1: TClientDataSet;
    begtime: TDateTimePicker;
    endTime: TDateTimePicker;
    IsJYTime: TCheckBox;
    ToolButton4: TToolButton;
    Label5: TLabel;
    C_Name: TEdit;
    PM_1: TPopupMenu;
    PM11: TMenuItem;
    N1: TMenuItem;
    C_GramWeight: TEdit;
    label11: TLabel;
    Panel2: TPanel;
    N2: TMenuItem;
    N3: TMenuItem;
    ToolButton1: TToolButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    cxGrid1: TcxGrid;
    Tv1: TcxGridDBTableView;
    v1Column22: TcxGridDBColumn;
    Tv1Column3: TcxGridDBColumn;
    Tv1issp: TcxGridDBColumn;
    Tv1Column4: TcxGridDBColumn;
    Tv1Column6: TcxGridDBColumn;
    Tv1Column1: TcxGridDBColumn;
    Tv1YdPF: TcxGridDBColumn;
    Tv1Column7: TcxGridDBColumn;
    Tv1Column8: TcxGridDBColumn;
    Tv1edPF: TcxGridDBColumn;
    Tv1Column9: TcxGridDBColumn;
    Tv1Column10: TcxGridDBColumn;
    Tv1xjPF: TcxGridDBColumn;
    Tv1Column13: TcxGridDBColumn;
    Tv1Column14: TcxGridDBColumn;
    Tv1fqPF: TcxGridDBColumn;
    Tv1Column17: TcxGridDBColumn;
    Tv1Column18: TcxGridDBColumn;
    Tv1csPF: TcxGridDBColumn;
    Tv1pf: TcxGridDBColumn;
    cxGrid1Level1: TcxGridLevel;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridDBColumn4: TcxGridDBColumn;
    cxGridDBColumn5: TcxGridDBColumn;
    cxGridDBColumn6: TcxGridDBColumn;
    cxGridDBColumn7: TcxGridDBColumn;
    cxGridDBColumn8: TcxGridDBColumn;
    cxGridDBColumn9: TcxGridDBColumn;
    cxGridDBColumn10: TcxGridDBColumn;
    cxGridDBColumn11: TcxGridDBColumn;
    cxGridDBColumn12: TcxGridDBColumn;
    cxGridDBColumn13: TcxGridDBColumn;
    cxGridDBColumn14: TcxGridDBColumn;
    cxGridDBColumn15: TcxGridDBColumn;
    cxGridDBColumn16: TcxGridDBColumn;
    cxGridDBColumn17: TcxGridDBColumn;
    cxGridDBColumn18: TcxGridDBColumn;
    cxGridDBColumn19: TcxGridDBColumn;
    cxGridDBColumn20: TcxGridDBColumn;
    cxGridDBColumn21: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    CDS_2: TClientDataSet;
    DS_2: TDataSource;
    PM_2: TPopupMenu;
    GPM_2: TcxGridPopupMenu;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    label12: TLabel;
    C_width: TEdit;
    Tv1Column2: TcxGridDBColumn;
    Tv1Column5: TcxGridDBColumn;
    Tv2Column1: TcxGridDBColumn;
    Tv2Column2: TcxGridDBColumn;
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure TBRafreshClick(Sender: TObject);
    procedure ConNoMChange(Sender: TObject);
    procedure TBCloseClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure TBExportClick(Sender: TObject);
    procedure orderNoKeyPress(Sender: TObject; var Key: Char);
    procedure BTNPClick(Sender: TObject);
    procedure BTLPClick(Sender: TObject);
    procedure TCBNORChange(Sender: TObject);
    procedure JYTypeChange(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure cxPageControl1Change(Sender: TObject);
    procedure CDS_1BeforeOpen(DataSet: TDataSet);
    procedure Tv1DataControllerFilterBeforeChange(Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: string);

    procedure Tv1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems6GetText(Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string);
    procedure ToolButton4Click(Sender: TObject);
    procedure PM11Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure IsJYTimeClick(Sender: TObject);
    procedure C_NameKeyPress(Sender: TObject; var Key: Char);

    procedure N2Click(Sender: TObject);
    procedure Tv1DblClick(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
  private
    CurrentPage, RecordsNumber: Integer;
    lstCust: TStringList;
    procedure InitGrid();
    procedure InitGrid2();
    procedure SetStatus();
    procedure CopyColumnSummaryToClipboard(AView: TcxGridDBTableView; AColumn: TcxGridColumn);

    { Private declarations }
  public
    canshu1: string;
    { Public declarations }
  end;

implementation

uses
  U_DataLink, U_RTFun, U_LabelPrint, U_TatClothStkHZList2;

{$R *.dfm}

procedure TfrmTatClothStkHZList.SetStatus();
begin

end;

procedure TfrmTatClothStkHZList.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  inherited;
  FreeAndNil(lstCust);
  Action := caFree;
end;

procedure TfrmTatClothStkHZList.FormCreate(Sender: TObject);
begin
  inherited;
  lstCust := TStringList.Create;
  EndDate.DateTime := SGetServerDateTime(ADOQueryTemp);
  BegDate.DateTime := EndDate.DateTime - 20;
end;

procedure TfrmTatClothStkHZList.InitGrid();
var
  WSql: string;
begin

  WSql := SGetFilters(Panel1, 1, 2);
  if Trim(WSql) <> '' then
    WSql := ' and ' + WSql;
  if IsJYTime.Checked then
  begin
    WSql := WSql + ' and IOTime>=' + quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime));
    WSql := WSql + ' and IOTime<' + quotedstr(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1));
  end;

  try
    ADOQueryMain.DisableControls;

    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;

      sql.Add('select A.C_NAME ,A.C_GramWeight,tube,Packaging');
//      SQL.Add(',pf=SUM(A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)))');
      SQL.Add(',pf=SUM(CASE WHEN GRADE=''优等品'' or GRADE=''二等品'' or GRADE=''小卷'' or GRADE=''分切'' or GRADE=''测试'' THEN meter/100*CAST(C_WIDTH AS DECIMAL(18,2)) else 0 end )');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END )AS YDJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN A.meter ELSE 0 END )AS Ydqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS YdPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN 1 ELSE 0 END )AS edJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN A.meter ELSE 0 END )AS edqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS edPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN 1 ELSE 0 END )AS xjJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN A.meter ELSE 0 END )AS xjqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS xjPF');
//      SQL.Add(',SUM(CASE WHEN A.GRADE=''废布'' THEN 1 ELSE 0 END )AS fbJS');
//      SQL.Add(',SUM(CASE WHEN A.GRADE=''废布'' THEN A.meter ELSE 0 END )AS fbqty');
//      SQL.Add(',SUM(CASE WHEN GRADE=''废布'' THEN meter/100*CAST(C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS fbPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN 1 ELSE 0 END )AS fqJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN A.meter ELSE 0 END )AS fqqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS fqPF');
//      SQL.Add(',SUM(CASE WHEN A.GRADE=''循环布'' THEN 1 ELSE 0 END )AS xhJS');
//      SQL.Add(',SUM(CASE WHEN A.GRADE=''循环布'' THEN A.meter ELSE 0 END )AS xhqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN 1 ELSE 0 END )AS csJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN A.meter ELSE 0 END )AS csqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS csPF');
      sql.Add(', issp=isnull(A.issp,'''')  ');

      SQL.Add('from   V_Tat_Cloth_stk A  where  1=1  ' + WSql);
      SQL.Add(' and Grade <> ''废布'' ');
      SQL.Add(' and Grade <> ''循环布'' ');

      sql.Add(' group by A.C_NAME,A.C_GramWeight,isnull(A.issp,'''') ,tube,Packaging');
      SQL.Add(' order by A.C_NAME,A.C_GramWeight,isnull(A.issp,'''') ');

//            showmessage(sql.text);
      Open;
    end;
    SCreateCDS(ADOQueryMain, CDS_1);
    SInitCDSData(ADOQueryMain, CDS_1);

  finally
    ADOQueryMain.EnableControls;
    TV1.DataController.Filter.Clear;
  end;

end;

procedure TfrmTatClothStkHZList.InitGrid2();
var
  WSql: string;
begin

  WSql := SGetFilters(Panel1, 1, 2);
  if Trim(WSql) <> '' then
    WSql := ' and ' + WSql;
  if IsJYTime.Checked then
  begin
    WSql := WSql + ' and IOTime>=' + quotedstr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime));
    WSql := WSql + ' and IOTime<' + quotedstr(FormatDateTime('yyyy-MM-dd', enddate.DateTime + 1));
  end;

  try
    ADOQueryMain.DisableControls;

    with ADOQueryMain do
    begin
      Filtered := False;
      Close;
      sql.Clear;

      sql.Add('select A.C_NAME, A.C_width,A.C_GramWeight,tube,Packaging ');
      SQL.Add(',pf=SUM(CASE WHEN (GRADE=''优等品'' or GRADE=''二等品'' or GRADE=''小卷'' or GRADE=''分切'' or GRADE=''测试'') THEN meter/100*CAST(C_WIDTH AS DECIMAL(18,2)) else 0 end )');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN 1 ELSE 0 END )AS YDJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN A.meter ELSE 0 END )AS Ydqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''优等品'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS YdPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN 1 ELSE 0 END )AS edJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN A.meter ELSE 0 END )AS edqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''二等品'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS edPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN 1 ELSE 0 END )AS xjJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN A.meter ELSE 0 END )AS xjqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''小卷'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS xjPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''废布'' THEN 1 ELSE 0 END )AS fbJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''废布'' THEN A.meter ELSE 0 END )AS fbqty');
//      SQL.Add(',SUM(CASE WHEN GRADE=''废布'' THEN meter/100*CAST(C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS fbPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN 1 ELSE 0 END )AS fqJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN A.meter ELSE 0 END )AS fqqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''分切'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS fqPF');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''循环布'' THEN 1 ELSE 0 END )AS xhJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''循环布'' THEN A.meter ELSE 0 END )AS xhqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN 1 ELSE 0 END )AS csJS');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN A.meter ELSE 0 END )AS csqty');
      SQL.Add(',SUM(CASE WHEN A.GRADE=''测试'' THEN A.meter/100*CAST(A.C_WIDTH AS DECIMAL(18,2)) ELSE 0 END )AS csPF');
      sql.Add(', issp=isnull(A.issp,'''')  ');

      SQL.Add('from   V_Tat_Cloth_stk A  where  1=1 ');
      SQL.Add(' and Grade <> ''废布'' ');
      SQL.Add(' and Grade <> ''循环布'' ');

      SQL.Add(WSql);
      sql.Add(' group by A.C_NAME, A.C_width,A.C_GramWeight,isnull(A.issp,''''),tube,Packaging ');
      SQL.Add(' order by A.C_NAME, CAST(A.C_Width AS DECIMAL(10,2)),A.C_GramWeight');

//            showmessage(sql.text);
      Open;
    end;
    SCreateCDS(ADOQueryMain, CDS_2);
    SInitCDSData(ADOQueryMain, CDS_2);

  finally
    ADOQueryMain.EnableControls;
    TV2.DataController.Filter.Clear;
  end;

end;

procedure TfrmTatClothStkHZList.IsJYTimeClick(Sender: TObject);
begin
  inherited;
  InitGrid();
end;

procedure TfrmTatClothStkHZList.TBRafreshClick(Sender: TObject);
begin
  CurrentPage := 1;
  InitGrid();
  InitGrid2();
end;

procedure TfrmTatClothStkHZList.CDS_1BeforeOpen(DataSet: TDataSet);
begin

  lstCust.Clear;
end;

procedure TfrmTatClothStkHZList.ConNoMChange(Sender: TObject);
begin
  if ADOQueryMain.Active then
  begin
    SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2));
  end;
end;

procedure TfrmTatClothStkHZList.cxPageControl1Change(Sender: TObject);
begin
  CurrentPage := 1;
  SetStatus();
  InitGrid();
end;

procedure TfrmTatClothStkHZList.C_NameKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if Key = #13 then
  begin
    InitGrid();
    InitGrid2();
  end;
end;

procedure TfrmTatClothStkHZList.TBCloseClick(Sender: TObject);
begin

  Close;
end;

procedure TfrmTatClothStkHZList.FormShow(Sender: TObject);
begin
  inherited;

  ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '成品库存汇总');
  ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '成品库存汇总');
  CurrentPage := 1;
  RecordsNumber := 500;
  canshu1 := Trim(Self.fParameters1);

  SetStatus();
  InitGrid();
  InitGrid2();
end;

procedure TfrmTatClothStkHZList.TBExportClick(Sender: TObject);
begin
  if PageControl1.ActivePage.Caption = '  汇总 ' then
  begin
    if CDS_1.IsEmpty then
      Exit;
    with CDS_1 do
    begin
      Filtered := false;
      Filter := ' ssel = 1';
      Filtered := true;
    end;
    TcxGridToExcel(Self.Caption, cxGrid1);
    InitGrid();
  end
  else if PageControl1.ActivePage.Caption = '  明细 ' then
  begin
    if CDS_2.IsEmpty then
      Exit;
    with CDS_2 do
    begin
      Filtered := false;
      Filter := ' ssel = 1';
      Filtered := true;
    end;
    TcxGridToExcel(Self.Caption, cxGrid2);
    InitGrid2();
  end;

end;

procedure TfrmTatClothStkHZList.orderNoKeyPress(Sender: TObject; var Key: Char);
begin
  if Key = #13 then
  begin
    CurrentPage := 1;
    InitGrid();
  end;
end;

procedure TfrmTatClothStkHZList.PM11Click(Sender: TObject);
begin
  SelOKNo(CDS_1, false);
end;

procedure TfrmTatClothStkHZList.Tv1DataControllerFilterBeforeChange(Sender: TcxDBDataFilterCriteria; ADataSet: TDataSet; const AFilterText: string);
begin
  lstCust.Clear;
end;

procedure TfrmTatClothStkHZList.Tv1DblClick(Sender: TObject);
begin
  if CDS_1.IsEmpty then
    Exit;
  try
    frmTatClothStkHZList2 := TfrmTatClothStkHZList2.Create(Application);
    with frmTatClothStkHZList2 do
    begin
      fEndDateTime := self.EndDate.DateTime;
      fBegDateTime := Self.BegDate.DateTime;

      fC_Name := Self.CDS_1.FieldByName('C_Name').AsString;
      fC_GramWeight := Self.CDS_1.FieldByName('C_GramWeight').AsString;
      fissp := Self.CDS_1.FieldByName('issp').AsString;
      ftube := Self.CDS_1.FieldByName('tube').AsString;
      fPackaging := Self.CDS_1.FieldByName('Packaging').AsString;
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmTatClothStkHZList2.Free;
  end;
end;

procedure TfrmTatClothStkHZList.Tv1TcxGridDBDataControllerTcxDataSummaryFooterSummaryItems6GetText(Sender: TcxDataSummaryItem; const AValue: Variant; AIsFooter: Boolean; var AText: string);
begin
  if lstCust <> nil then
    AText := IntToStr(lstCust.Count);
end;

procedure TfrmTatClothStkHZList.BTNPClick(Sender: TObject);
begin
  if CurrentPage < CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber then
    CurrentPage := CurrentPage + 1;
  InitGrid();
end;

procedure TfrmTatClothStkHZList.BTLPClick(Sender: TObject);
begin
  if CurrentPage > 1 then
    CurrentPage := CurrentPage - 1;
  InitGrid();
end;

procedure TfrmTatClothStkHZList.TCBNORChange(Sender: TObject);
begin

  CurrentPage := 1;
  InitGrid();
end;

procedure TfrmTatClothStkHZList.JYTypeChange(Sender: TObject);
begin
  CurrentPage := 1;
  InitGrid();
end;

procedure TfrmTatClothStkHZList.N1Click(Sender: TObject);
begin

  SelOKNo(CDS_1, true);
end;

procedure TfrmTatClothStkHZList.N2Click(Sender: TObject);
begin
  Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));

end;

procedure TfrmTatClothStkHZList.N3Click(Sender: TObject);
begin

  CopyColumnSummaryToClipboard(TV1, TV1.Controller.FocusedColumn);
end;

procedure TfrmTatClothStkHZList.N4Click(Sender: TObject);
begin

  SelOKNo(CDS_2, true);
end;

procedure TfrmTatClothStkHZList.N5Click(Sender: TObject);
begin

  SelOKNo(CDS_2, false);
end;

procedure TfrmTatClothStkHZList.N6Click(Sender: TObject);
begin
  Clipboard.SetTextBuf(PChar(Trim(CDS_2.fieldbyname(TV2.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString)));

end;

procedure TfrmTatClothStkHZList.N7Click(Sender: TObject);
begin

  CopyColumnSummaryToClipboard(TV2, TV2.Controller.FocusedColumn);
end;

procedure TfrmTatClothStkHZList.CopyColumnSummaryToClipboard(AView: TcxGridDBTableView; AColumn: TcxGridColumn);
var
  SummaryIndex: Integer;
  SummaryText: string;
begin
  // 查找指定列的汇总项
  SummaryIndex := AView.DataController.Summary.FooterSummaryItems.IndexOfItemLink(AColumn);
  if SummaryIndex <> -1 then
  begin
    SummaryText := AView.DataController.Summary.FooterSummaryTexts[SummaryIndex];
    Clipboard.AsText := SummaryText;
  end
  else
    ShowMessage('未找到该列的汇总数据');
end;

procedure TfrmTatClothStkHZList.ToolButton2Click(Sender: TObject);
var
  WSql: string;
begin
  if CDS_1.IsEmpty then
    Exit;
  if not CDS_1.Locate('SSel', True, []) then
  begin
    Application.MessageBox('没有选择数据!', '提示', 0);
    Exit;
  end;
  WSql := '';
  CDS_1.DisableControls;
  with CDS_1 do
  begin
    First;
    while not Eof do
    begin
      if CDS_1.fieldbyname('SSel').AsBoolean then
      begin
        if WSql <> '' then
        begin
          WSql := WSql + ',' + QuotedStr(Trim(CDS_1.fieldbyname('CIID').AsString));
        end
        else
        begin
          WSql := QuotedStr(Trim(CDS_1.fieldbyname('CIID').AsString));
        end;
      end;
      Next;
    end;
  end;
  CDS_1.Locate('SSel', True, []);
  CDS_1.EnableControls;
  try
    frmLabelPrint := TfrmLabelPrint.Create(Application);
    with frmLabelPrint do
    begin
      FLMType := 'TradeClothStk';
      FFiltration1 := WSql;
      if ShowModal = 1 then
      begin

      end;
    end;
  finally
    frmLabelPrint.Free;
  end;
end;

procedure TfrmTatClothStkHZList.ToolButton4Click(Sender: TObject);
begin
  WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, '成品库存汇总');
  WriteCxGrid(trim(self.Caption) + 'Tv2', Tv2, '成品库存汇总');
end;

end.

