unit U_LSFHSQList; 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, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid, DBClient, cxCheckBox, cxCalendar, cxSplitter, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, RM_e_Xls, Menus, cxPC, cxButtonEdit, RM_E_llPDF, cxDropDownEdit, cxTextEdit, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu; type TfrmLSFHSQList = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBFind: TToolButton; TBAdd: TToolButton; TBEdit: TToolButton; TBDel: TToolButton; TBPrint: TToolButton; TBClose: TToolButton; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxGridPopupMenu1: TcxGridPopupMenu; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; ADOQueryTemp: TADOQuery; DataSource1: TDataSource; v1OrdDate: TcxGridDBColumn; v1OrdPerson1: TcxGridDBColumn; Order_Main: TClientDataSet; RMDB_Main: TRMDBDataSet; RMXLSExport1: TRMXLSExport; ToolButton1: TToolButton; ADOQueryPrint: TADOQuery; CDS_Print: TClientDataSet; v1Column4: TcxGridDBColumn; Panel1: TPanel; Label1: TLabel; Label4: TLabel; Label5: TLabel; Label8: TLabel; Label12: TLabel; Label13: TLabel; BegDate: TDateTimePicker; EndDate: TDateTimePicker; KHName: TEdit; YwyName: TEdit; MPRTCodeName: TEdit; MPRTKZ: TEdit; MPRTMF: TEdit; cxTabControl1: TcxTabControl; tchk: TToolButton; Tnochk: TToolButton; cxSplitter1: TcxSplitter; ADOQuerySub: TADOQuery; DataSource2: TDataSource; v1Column8: TcxGridDBColumn; Label2: TLabel; //RMllPDFExport1: TRMllPDFExport; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v1Column5: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ClientDataSet2: TClientDataSet; cxGridPopupMenu2: TcxGridPopupMenu; CDS_Note: TClientDataSet; RM1: TRMGridReport; v1Column11: TcxGridDBColumn; v1Column13: TcxGridDBColumn; v1Column17: TcxGridDBColumn; v2Column1: TcxGridDBColumn; v2Column3: TcxGridDBColumn; v2Column5: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v2Column8: TcxGridDBColumn; v2Column12: TcxGridDBColumn; v1Column2: TcxGridDBColumn; CDSUser: TClientDataSet; IdHTTP1: TIdHTTP; v2Column2: TcxGridDBColumn; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; v1Column3: TcxGridDBColumn; v2Column4: TcxGridDBColumn; v2Column6: TcxGridDBColumn; v2Column7: TcxGridDBColumn; v1Column6: TcxGridDBColumn; Label3: TLabel; SQType: TEdit; Tv2Column1: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBFindClick(Sender: TObject); procedure TBEditClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure TBPrintClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure KHNameChange(Sender: TObject); procedure tchkClick(Sender: TObject); procedure TnochkClick(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private procedure InitGrid(); procedure InitSubGrid(); procedure InitForm(); procedure SetStatus(); function DelData(): Boolean; { Private declarations } public FFInt: Integer; canshu1: string; { Public declarations } end; implementation uses U_DataLink, U_LSFHSQInPut, U_Fun, U_ZDYHelp; {$R *.dfm} procedure TfrmLSFHSQList.SetStatus(); begin tchk.Visible := False; Tnochk.Visible := False; TBDel.Visible := False; TBEdit.Visible := False; TBAdd.Visible := False; if canshu1 = '录入' then begin TBAdd.Visible := true; case cxTabControl1.TabIndex of 0: begin TBEdit.Visible := true; TBDel.Visible := true; end; 1: begin end; 2: begin end; end; end else if canshu1 = '审核' then begin TBAdd.Visible := true; case cxTabControl1.TabIndex of 0: begin tchk.Visible := true; TBEdit.Visible := true; TBDel.Visible := true; end; 1: begin Tnochk.Visible := true; end; 2: begin end; end; end; end; procedure TfrmLSFHSQList.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end; procedure TfrmLSFHSQList.TBCloseClick(Sender: TObject); begin Close; WriteCxGrid(trim(self.Caption), Tv1, 'JTS发货申请管理'); WriteCxGrid(trim(self.Caption), Tv2, 'JTS发货申请管理'); end; procedure TfrmLSFHSQList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered := False; Close; sql.Clear; Sql.Add(' select A.*'); sql.Add(' from SQ_FHYT_Main A'); sql.Add(' where 1=1'); if cxTabControl1.TabIndex <> 0 then begin sql.Add(' and filltime>=''' + Trim(FormatDateTime('yyyy-MM-dd', BegDate.Date)) + ''''); sql.Add(' and filltime<''' + Trim(FormatDateTime('yyyy-MM-dd', EndDate.Date + 1)) + ''''); end; if cxTabControl1.TabIndex = 0 then begin SQL.Add(' and isnull(A.Chker,'''')='''' '); end else if cxTabControl1.TabIndex = 1 then begin SQL.Add(' and isnull(A.Chker,'''')<>'''' '); end; if Trim(canshu1) = '录入' then begin sql.Add(' and isnull(A.Filler,'''')=''' + Trim(DName) + ''''); end; // showmessage(sql.text); Open; end; SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); finally ADOQueryMain.EnableControls; end; end; procedure TfrmLSFHSQList.InitForm(); begin ReadCxGrid(trim(self.Caption), Tv1, 'JTS发货申请管理'); ReadCxGrid(trim(self.Caption), Tv2, 'JTS发货申请管理'); EndDate.DateTime := SGetServerDate10(ADOQueryTemp); BegDate.DateTime := EndDate.DateTime; SetStatus(); InitGrid(); end; procedure TfrmLSFHSQList.TBFindClick(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); end; procedure TfrmLSFHSQList.TBEditClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 0 then Exit; if Trim(canshu1) <> '高权限' then begin if Trim(Order_Main.fieldbyname('Filler').AsString) <> Trim(DName) then begin Application.MessageBox('不能操作他人的数据!', '提示', 0); Exit; end; end; try frmLSFHSQInPut := TfrmLSFHSQInPut.Create(Application); with frmLSFHSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('FHMainId').AsString); if ShowModal = 1 then begin end; end; finally frmLSFHSQInPut.Free; end; end; procedure TfrmLSFHSQList.TBDelClick(Sender: TObject); begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 0 then Exit; if Trim(Order_Main.fieldbyname('Filler').AsString) <> Trim(DName) then begin Application.MessageBox('不能操作他人的数据!', '提示', 0); Exit; end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from SQ_FHYT_Sub where FHMainId=''' + Trim(Order_Main.fieldbyname('FHMainId').AsString) + ''''); sql.add(' and isnull(FHPiQty,0)>0'); Open; end; if ADOQueryTemp.IsEmpty = False then begin Application.MessageBox('已发货不能删除数据!', '提示', 0); exit; end; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; if DelData() then begin Order_Main.Delete; InitSubGrid(); end; end; function TfrmLSFHSQList.DelData(): Boolean; begin try Result := false; ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete SQ_FHYT_Sub where FHMainId=''' + Trim(Order_Main.fieldbyname('FHMainId').AsString) + ''''); ExecSQL; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete SQ_FHYT_Main where FHMainId=''' + Trim(Order_Main.fieldbyname('FHMainId').AsString) + ''''); ExecSQL; end; ADOQueryCmd.Connection.CommitTrans; Result := True; except ADOQueryCmd.Connection.RollbackTrans; Result := False; Application.MessageBox('数据删除异常!', '提示', 0); end; end; procedure TfrmLSFHSQList.TBPrintClick(Sender: TObject); var fPrintFile: string; Txt, fImagePath: string; Moudle: THandle; Makebar: TMakebar; Mixtext: TMixtext; begin if Order_Main.IsEmpty then Exit; if cxTabControl1.TabIndex <> 1 then Exit; with ADOQueryPrint do begin Close; sql.Clear; Sql.Add(' select A.*,B.*'); //and Y.ClothType=B.ClothType sql.Add(' from SQ_FHYT_Main A inner join SQ_FHYT_Sub B on A.FHMainId=B.FHMainId '); sql.Add(' where A.FHMainId=''' + Trim(Order_Main.fieldbyname('FHMainId').AsString) + ''''); open; end; fPrintFile := ExtractFilePath(Application.ExeName) + 'Report\加弹丝发货申请单.rmf'; if FileExists(fPrintFile) then begin try Moudle := LoadLibrary('MakeQRBarcode.dll'); @Makebar := GetProcAddress(Moudle, 'Make'); @Mixtext := GetProcAddress(Moudle, 'MixText'); Txt := Trim(Order_Main.fieldbyname('FHMainId').AsString); fImagePath := ExtractFilePath(Application.ExeName) + 'image\temp.bmp'; if not DirectoryExists(pchar(ExtractFilePath(Application.ExeName) + 'image')) then CreateDirectory(pchar(ExtractFilePath(Application.ExeName) + 'image'), nil); if FileExists(fImagePath) then DeleteFile(fImagePath); Makebar(pchar(Txt), Length(Txt), 3, 3, 0, PChar(fImagePath), 3); except application.MessageBox('条形码生成失败!', '提示信息', MB_ICONERROR); exit; end; RMVariables['QRBARCODE'] := fImagePath; RM1.LoadFromFile(fPrintFile); RM1.ShowReport; end else begin Application.MessageBox(PChar('没有找' + ExtractFilePath(Application.ExeName) + 'Report\加弹丝发货申请单.rmf'), '提示', 0); end; end; procedure TfrmLSFHSQList.TBRafreshClick(Sender: TObject); begin InitGrid(); TBFind.Click; InitSubGrid(); end; procedure TfrmLSFHSQList.TBAddClick(Sender: TObject); var maxno: string; begin try frmLSFHSQInPut := TfrmLSFHSQInPut.Create(Application); with frmLSFHSQInPut do begin PState := 0; FMainId := ''; if ShowModal = 1 then begin end; end; finally frmLSFHSQInPut.Free; end; InitGrid(); end; procedure TfrmLSFHSQList.FormShow(Sender: TObject); begin InitForm(); end; procedure TfrmLSFHSQList.CheckBox1Click(Sender: TObject); begin InitGrid(); end; procedure TfrmLSFHSQList.CheckBox2Click(Sender: TObject); begin TBRafresh.Click; end; procedure TfrmLSFHSQList.ToolButton1Click(Sender: TObject); begin if Order_Main.IsEmpty then Exit; try frmLSFHSQInPut := TfrmLSFHSQInPut.Create(Application); with frmLSFHSQInPut do begin PState := 1; FMainId := Trim(Self.Order_Main.fieldbyname('FHMainId').AsString); ToolBar2.Visible := False; TBSave.Visible := False; ScrollBox1.Enabled := False; Tv1.OptionsSelection.CellSelect := False; if ShowModal = 1 then begin end; end; finally frmLSFHSQInPut.Free; end; end; procedure TfrmLSFHSQList.KHNameChange(Sender: TObject); begin if ADOQueryMain.Active = False then Exit; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(ADOQueryMain, Order_Main); SInitCDSData20(ADOQueryMain, Order_Main); end; procedure TfrmLSFHSQList.tchkClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if cxTabControl1.TabIndex <> 0 then exit; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update SQ_FHYT_Main SET Chker=''' + Trim(DName) + ''',ChkTime=getdate(),ChkStatus=''审核通过'' '); sql.Add('where FHMainId=' + quotedstr(trim(Order_Main.fieldbyname('FHMainId').AsString))); execsql; end; Order_Main.Delete; InitSubGrid(); application.MessageBox('审核成功!', '提示信息'); except application.MessageBox('审核失败!', '提示信息', 0); end; end; procedure TfrmLSFHSQList.InitSubGrid(); begin with ADOQueryTemp do begin Close; sql.Clear; if Order_Main.IsEmpty = False then sql.Add('select * from SQ_FHYT_Sub A where A.FHMainId=''' + Trim(Order_Main.fieldbyname('FHMainId').AsString) + '''') else sql.Add('select * from SQ_FHYT_Sub A where 1=2'); Open; end; SCreateCDS20(ADOQueryTemp, ClientDataSet2); SInitCDSData20(ADOQueryTemp, ClientDataSet2); end; procedure TfrmLSFHSQList.TnochkClick(Sender: TObject); begin if Order_Main.IsEmpty then exit; if cxTabControl1.TabIndex <> 1 then exit; with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from SQ_FHYT_Main'); sql.Add('where FHMainId=' + quotedstr(trim(Order_Main.fieldbyname('FHMainId').AsString))); Open; end; if Trim(ADOQueryTemp.fieldbyname('HDPerson').AsString) <> '' then begin Application.MessageBox('已核对不能撤销!', '提示', 0); Exit; end; try with ADOQueryCmd do begin close; sql.Clear; sql.Add('update SQ_FHYT_Main SET Chker=Null,ChkTime=Null,ChkStatus=Null '); sql.Add('where FHMainId=' + quotedstr(trim(Order_Main.fieldbyname('FHMainId').AsString))); execsql; end; Order_Main.Delete; InitSubGrid(); application.MessageBox('撤销成功!', '提示信息'); except application.MessageBox('撤销失败!', '提示信息', 0); end; end; procedure TfrmLSFHSQList.cxTabControl1Change(Sender: TObject); begin SetStatus(); InitGrid(); end; procedure TfrmLSFHSQList.Tv1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin InitSubGrid(); end; end.