unit U_TatKnitterQuery; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, ComCtrls, ToolWin, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, DBClient, cxCheckBox, cxCalendar, cxPC, Math, U_BaseList, MovePanel, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, System.StrUtils, dxScrollbarAnnotations, dxSkinWXI; type TfrmTatKnitterQuery = class(TfrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; TBExpSum: TToolButton; TBExpDet: TToolButton; TBSaveFmt: TToolButton; TBClose: TToolButton; Panel1: TPanel; Label1: TLabel; knitter: TEdit; Label2: TLabel; C_Name: TEdit; IsJYTime: TCheckBox; BegDate: TDateTimePicker; Label4: TLabel; EndDate: TDateTimePicker; cxPageControl1: TcxPageControl; TabSum: TcxTabSheet; cxGridS: TcxGrid; TvS: TcxGridDBTableView; TvSknitter: TcxGridDBColumn; TvSC_Name: TcxGridDBColumn; TvSSumQty: TcxGridDBColumn; TvSRollCount: TcxGridDBColumn; cxGridSLevel1: TcxGridLevel; PanelS: TPanel; LabelS1: TLabel; TCBNORS: TComboBox; BTLPS: TButton; LBCPAPS: TLabel; BTNPS: TButton; TabDet: TcxTabSheet; cxGridD: TcxGrid; TvD: TcxGridDBTableView; TvDCARNO: TcxGridDBColumn; TvDknitter: TcxGridDBColumn; TvDC_Name: TcxGridDBColumn; TvDqty: TcxGridDBColumn; TvDCIID: TcxGridDBColumn; cxGridDLevel1: TcxGridLevel; PanelD: TPanel; LabelD1: TLabel; TCBNORD: TComboBox; BTLPD: TButton; LBCPAPD: TLabel; BNTPD: TButton; MovePanel2: TMovePanel; ADOQSum: TADOQuery; ADOQDetail: TADOQuery; ADOQueryTemp: TADOQuery; DS_S: TDataSource; DS_D: TDataSource; CDS_Sum: TClientDataSet; CDS_Detail: TClientDataSet; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBExpSumClick(Sender: TObject); procedure TBExpDetClick(Sender: TObject); procedure TBSaveFmtClick(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure knitterKeyPress(Sender: TObject; var Key: Char); procedure C_NameKeyPress(Sender: TObject; var Key: Char); procedure BTLPSClick(Sender: TObject); procedure BTNPSClick(Sender: TObject); procedure TCBNORSChange(Sender: TObject); procedure BTLPDClick(Sender: TObject); procedure BNTPDClick(Sender: TObject); procedure TCBNORDChange(Sender: TObject); procedure TvSCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); procedure TvDCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); private FWorkshop: string; CurrentPageS, RecordsNumberS, CurrentPageD, RecordsNumberD: Integer; function BuildCriteria(): string; procedure InitSum(); procedure InitDetail(); { Private declarations } public { Public declarations } end; var frmTatKnitterQuery: TfrmTatKnitterQuery; implementation uses U_DataLink, U_RTFun; {$R *.dfm} procedure TfrmTatKnitterQuery.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmTatKnitterQuery.FormCreate(Sender: TObject); begin inherited; FWorkshop := Trim(Self.fParameters3); end; procedure TfrmTatKnitterQuery.FormShow(Sender: TObject); begin inherited; CurrentPageS := 1; RecordsNumberS := 500; CurrentPageD := 1; RecordsNumberD := 500; ReadCxGrid(Trim(Self.Caption) + 'TvS', TvS, '贸易检验管理'); ReadCxGrid(Trim(Self.Caption) + 'TvD', TvD, '贸易检验管理'); EndDate.DateTime := SGetServerDate(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime; InitSum(); InitDetail(); end; function TfrmTatKnitterQuery.BuildCriteria(): string; var WSql: string; begin WSql := SGetFilters(Panel1, 1, 2); if Trim(WSql) <> '' then WSql := ' and ' + Trim(WSql); if Trim(FWorkshop) <> '' then WSql := WSql + ' and A.Workshop=' + QuotedStr(Trim(FWorkshop)); if IsJYTime.Checked then begin WSql := WSql + ' and A.FillTime>' + QuotedStr(FormatDateTime('yyyy-MM-dd', BegDate.DateTime)); WSql := WSql + ' and A.FillTime<=' + QuotedStr(FormatDateTime('yyyy-MM-dd', EndDate.DateTime + 1)); end else if Trim(WSql) = '' then WSql := ' and 1=2 '; Result := WSql; end; procedure TfrmTatKnitterQuery.InitSum(); var WSql: string; begin MovePanel2.Left := (Self.Width - MovePanel2.Width) div 2; MovePanel2.Visible := True; MovePanel2.Refresh; WSql := BuildCriteria(); if Trim(WSql) = 'and 1=2' then Application.MessageBox('勾选检验时间或填入搜索条件', '提示', 0); try CDS_Sum.DisableControls; with ADOQSum do begin Close; SQL.Clear; SQL.Add('exec P_Tat_Knitter_Sum_Get_Page '); SQL.Add('@pageIndex=' + IntToStr(CurrentPageS)); SQL.Add(',@pageSize=' + IntToStr(RecordsNumberS)); SQL.Add(',@criteria=' + QuotedStr(WSql)); Open; end; SCreateCDS(ADOQSum, CDS_Sum); SInitCDSData(ADOQSum, CDS_Sum); LBCPAPS.Caption := IntToStr(CurrentPageS) + '/' + IntToStr(Ceil(ADOQSum.FieldByName('TotalCount').AsInteger / RecordsNumberS)); finally CDS_Sum.EnableControls; MovePanel2.Visible := False; end; end; procedure TfrmTatKnitterQuery.InitDetail(); var WSql: string; begin MovePanel2.Left := (Self.Width - MovePanel2.Width) div 2; MovePanel2.Visible := True; MovePanel2.Refresh; WSql := BuildCriteria(); if Trim(WSql) = 'and 1=2' then Application.MessageBox('勾选检验时间或填入搜索条件', '提示', 0); try CDS_Detail.DisableControls; with ADOQDetail do begin Close; SQL.Clear; SQL.Add('exec P_Tat_Knitter_Get_Page '); SQL.Add('@pageIndex=' + IntToStr(CurrentPageD)); SQL.Add(',@pageSize=' + IntToStr(RecordsNumberD)); SQL.Add(',@criteria=' + QuotedStr(WSql)); Open; end; SCreateCDS(ADOQDetail, CDS_Detail); SInitCDSData(ADOQDetail, CDS_Detail); LBCPAPD.Caption := IntToStr(CurrentPageD) + '/' + IntToStr(Ceil(ADOQDetail.FieldByName('TotalCount').AsInteger / RecordsNumberD)); finally CDS_Detail.EnableControls; MovePanel2.Visible := False; end; end; procedure TfrmTatKnitterQuery.TBRafreshClick(Sender: TObject); begin CurrentPageS := 1; CurrentPageD := 1; InitSum(); InitDetail(); end; procedure TfrmTatKnitterQuery.TBExpSumClick(Sender: TObject); begin if CDS_Sum.IsEmpty then Exit; TcxGridToExcel(Trim(Self.Caption) + '-汇总', cxGridS); end; procedure TfrmTatKnitterQuery.TBExpDetClick(Sender: TObject); begin if CDS_Detail.IsEmpty then Exit; TcxGridToExcel(Trim(Self.Caption) + '-明细', cxGridD); end; procedure TfrmTatKnitterQuery.TBSaveFmtClick(Sender: TObject); begin WriteCxGrid(Trim(Self.Caption) + 'TvS', TvS, '贸易检验管理'); WriteCxGrid(Trim(Self.Caption) + 'TvD', TvD, '贸易检验管理'); end; procedure TfrmTatKnitterQuery.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmTatKnitterQuery.knitterKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPageS := 1; CurrentPageD := 1; InitSum(); InitDetail(); end; end; procedure TfrmTatKnitterQuery.C_NameKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPageS := 1; CurrentPageD := 1; InitSum(); InitDetail(); end; end; procedure TfrmTatKnitterQuery.BTLPSClick(Sender: TObject); begin if CurrentPageS > 1 then CurrentPageS := CurrentPageS - 1; InitSum(); end; procedure TfrmTatKnitterQuery.BTNPSClick(Sender: TObject); begin if CurrentPageS < ADOQSum.FieldByName('TotalCount').AsInteger / RecordsNumberS then CurrentPageS := CurrentPageS + 1; InitSum(); end; procedure TfrmTatKnitterQuery.TCBNORSChange(Sender: TObject); begin RecordsNumberS := StrToInt(TCBNORS.Text); CurrentPageS := 1; InitSum(); end; procedure TfrmTatKnitterQuery.BTLPDClick(Sender: TObject); begin if CurrentPageD > 1 then CurrentPageD := CurrentPageD - 1; InitDetail(); end; procedure TfrmTatKnitterQuery.BNTPDClick(Sender: TObject); begin if CurrentPageD < ADOQDetail.FieldByName('TotalCount').AsInteger / RecordsNumberD then CurrentPageD := CurrentPageD + 1; InitDetail(); end; procedure TfrmTatKnitterQuery.TCBNORDChange(Sender: TObject); begin RecordsNumberD := StrToInt(TCBNORD.Text); CurrentPageD := 1; InitDetail(); end; procedure TfrmTatKnitterQuery.TvSCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); var FValue: string; FBounds: TRect; begin FBounds := AViewInfo.Bounds; if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then begin ACanvas.FillRect(FBounds); ACanvas.DrawComplexFrame(FBounds, clBlack, clBlack, [bBottom, bLeft, bRight], 1); FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1); InflateRect(FBounds, -3, -2); ACanvas.Font.Color := clBlack; ACanvas.Brush.Style := bsClear; ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop); ADone := True; end; end; procedure TfrmTatKnitterQuery.TvDCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); var FValue: string; FBounds: TRect; begin FBounds := AViewInfo.Bounds; if (AViewInfo is TcxGridIndicatorRowItemViewInfo) then begin ACanvas.FillRect(FBounds); ACanvas.DrawComplexFrame(FBounds, clBlack, clBlack, [bBottom, bLeft, bRight], 1); FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1); InflateRect(FBounds, -3, -2); ACanvas.Font.Color := clBlack; ACanvas.Brush.Style := bsClear; ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop); ADone := True; end; end; end.