unit U_PieceSampleKcListSEL; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ToolWin, StdCtrls, ExtCtrls, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, cxButtonEdit, cxDropDownEdit, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, cxCheckBox, RM_Common, RM_Class, RM_GridReport, RM_System, RM_Dataset, MMSystem, Menus, BtnEdit, U_SLT, jpeg, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, Math, cxCalendar; type TfrmPieceSampleKcListSEL = class(TForm) ToolBar1: TToolBar; TBRafresh: TToolButton; TBExport: TToolButton; TBClose: TToolButton; Panel1: TPanel; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1P_CodeName: TcxGridDBColumn; v1P_SPEC: TcxGridDBColumn; v1Qty: TcxGridDBColumn; v1QtyUnit: TcxGridDBColumn; v1Note: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; v1CRType: TcxGridDBColumn; v1CRTime: TcxGridDBColumn; Label3: TLabel; P_CodeName: TEdit; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; TOk: TToolButton; v1Ssel: TcxGridDBColumn; Label7: TLabel; P_Color: TEdit; Label8: TLabel; Label9: TLabel; kuwei: TEdit; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; ADOQueryPrint: TADOQuery; RMDB_Main: TRMDBDataSet; RM1: TRMGridReport; v1Column8: TcxGridDBColumn; ADOQueryMain: TADOQuery; Label13: TLabel; v1Column9: TcxGridDBColumn; P_Code: TEdit; Label18: TLabel; v1Column16: TcxGridDBColumn; Label31: TLabel; FactoryName: TEdit; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; v1Column3: TcxGridDBColumn; v1Column4: TcxGridDBColumn; ToolButton2: TToolButton; v1Column2: TcxGridDBColumn; Panel2: TPanel; Label1: TLabel; Button1: TButton; edtKuWei: TBtnEditA; ToolButton1: TToolButton; v1Column1: TcxGridDBColumn; GroupBox1: TGroupBox; ScrollBox1: TScrollBox; v1Column7: TcxGridDBColumn; v1Column10: TcxGridDBColumn; adoqueryPicture: TADOQuery; ToolButton3: TToolButton; v1Column11: TcxGridDBColumn; lbl1: TLabel; cv1Column13: TcxGridDBColumn; btn1: TToolButton; Edit1: TEdit; lbl2: TLabel; btn2: TButton; v1Column12: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Panel6: TPanel; Label2: TLabel; LBCPAP: TLabel; BTLP: TButton; BTNP: TButton; TCBNOR: TComboBox; Label4: TLabel; gangno: TEdit; Tv1Column1: TcxGridDBColumn; Label5: TLabel; GRADE: TEdit; CKTYPE: TComboBox; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column5: TcxGridDBColumn; Label6: TLabel; Note: TEdit; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure P_CodeNameChange(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBExportClick(Sender: TObject); procedure TOkClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure edtKuWeiBtnClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure ToolButton3Click(Sender: TObject); procedure btn2Click(Sender: TObject); procedure btn1Click(Sender: TObject); procedure BTLPClick(Sender: TObject); procedure BTNPClick(Sender: TObject); procedure TCBNORChange(Sender: TObject); procedure P_CodeKeyPress(Sender: TObject; var Key: Char); procedure Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); procedure CKTYPEChange(Sender: TObject); private CurrentPage, RecordsNumber: Integer; procedure InitGrid(); procedure SetStatus(); procedure InitImage(); { Private declarations } public fType: integer; fCKName: string; { Public declarations } end; var frmPieceSampleKcListSEL: TfrmPieceSampleKcListSEL; var Mach: array of TfrmSlt; implementation uses U_DataLink, U_Fun10, U_ZDYHelp; {$R *.dfm} procedure TfrmPieceSampleKcListSEL.InitImage(); var i, j: integer; jpg: TJpegImage; myStream: TADOBlobStream; begin j := length(Mach); if j > 0 then begin for i := 0 to j - 1 do begin Mach[i].free; end; end; SetLength(Mach, 0); if CDS_Main.IsEmpty then exit; try with adoqueryPicture do begin close; sql.Clear; sql.Add(' select A.TFID,A.WBID,A.FilesOther,B.FileName from TP_File A,XD_File B where A.TFID =B.XFID '); if CDS_Main.IsEmpty = False then begin sql.Add('and A.WBID=' + quotedstr(trim(CDS_Main.fieldbyname('MJID').AsString))); end else begin sql.add(' and 1=2'); end; open; end; j := adoqueryPicture.RecordCount; if j < 1 then exit; adoqueryPicture.DisableControls; adoqueryPicture.First; SetLength(Mach, j); jpg := TJpegImage.Create(); for i := 0 to j - 1 do begin if triM(adoqueryPicture.fieldbyname('FilesOther').AsString) <> '' then begin myStream := tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')), bmread); jpg.LoadFromStream(myStream); Mach[i] := TfrmSlt.Create(Self); Mach[i].Name := trim(adoqueryPicture.fieldbyname('TFID').AsString); Mach[i].Parent := ScrollBox1; Mach[i].Left := 0 + i * 165; Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString, adoqueryPicture.fieldbyname('FileName').AsString, jpg); end; adoqueryPicture.Next; end; adoqueryPicture.EnableControls; finally jpg.free; application.ProcessMessages; end; end; procedure TfrmPieceSampleKcListSEL.SetStatus(); begin if fType = 10 then begin TOk.Visible := true; v1Ssel.Visible := true; ToolButton1.Visible := True; end; end; procedure TfrmPieceSampleKcListSEL.InitGrid(); var fwhere, Pwhere: string; begin Pwhere := SGetFilters(Panel1, 1, 2); begin if trim(Pwhere) <> '' then fwhere := fwhere + ' AND ' + trim(Pwhere); end; with adoqueryMain do begin close; sql.Clear; sql.Add('exec P_View_YPKCB_fy '); sql.Add('@pageIndex=' + inttostr(CurrentPage)); sql.Add(',@pageSize=' + inttostr(RecordsNumber)); sql.Add(',@criteria= ' + quotedstr(fwhere)); open; end; SCreateCDS20(adoqueryMain, CDS_Main); SInitCDSData20(adoqueryMain, CDS_Main); LBCPAP.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(CDS_Main.FieldByName('TotalCount').AsInteger / RecordsNumber)); end; procedure TfrmPieceSampleKcListSEL.FormClose(Sender: TObject; var Action: TCloseAction); begin writeCxGrid(self.Caption + tv1.Name, Tv1, '面料仓库'); if fType = 10 then Action := cahide else Action := cafree; end; procedure TfrmPieceSampleKcListSEL.FormDestroy(Sender: TObject); begin frmPieceSampleKcListSEL := nil; end; procedure TfrmPieceSampleKcListSEL.P_CodeNameChange(Sender: TObject); begin if adoqueryMain.Active = False then Exit; SDofilter(adoqueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(adoqueryMain, CDS_Main); SInitCDSData20(adoqueryMain, CDS_Main); end; procedure TfrmPieceSampleKcListSEL.FormShow(Sender: TObject); begin CurrentPage := 1; RecordsNumber := 500; readCxGrid(self.Caption + tv1.Name, Tv1, '面料仓库9'); SetStatus(); // InitGrid(); end; procedure TfrmPieceSampleKcListSEL.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption + tv1.Name, Tv1, '面料仓库9'); close; end; procedure TfrmPieceSampleKcListSEL.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmPieceSampleKcListSEL.TBExportClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; TcxGridToExcel(self.Caption, cxgrid1); end; procedure TfrmPieceSampleKcListSEL.TOkClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; ModalResult := 1; end; procedure TfrmPieceSampleKcListSEL.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, true); end; procedure TfrmPieceSampleKcListSEL.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, false); end; procedure TfrmPieceSampleKcListSEL.edtKuWeiBtnClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'mykuwei'; flagname := '库位'; if ShowModal = 1 then begin edtKuWei.Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmPieceSampleKcListSEL.ToolButton2Click(Sender: TObject); begin if adoqueryMain.Active = False then Exit; SDofilter(adoqueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS20(adoqueryMain, CDS_Main); SInitCDSData20(adoqueryMain, CDS_Main); end; procedure TfrmPieceSampleKcListSEL.ToolButton1Click(Sender: TObject); begin if Panel2.Visible = False then begin Panel2.Visible := True; Edit1.Visible := False; btn2.Visible := False; lbl2.Visible := False; Button1.Visible := True; end else Panel2.Visible := False; end; procedure TfrmPieceSampleKcListSEL.Button1Click(Sender: TObject); begin if trim(edtKuWei.Text) = '' then exit; try ADOQueryCmd.Connection.BeginTrans; while CDS_Main.Locate('SSel', true, []) do begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('update CK_Sample_CR set kuwei=' + quotedstr(trim(edtKuWei.Text))); sql.Add(' where CRNO=' + quotedstr(trim(CDS_Main.FieldByName('CRNO').AsString))); execsql; end; with CDS_Main do begin Edit; FieldByName('SSel').Value := false; FieldByName('KuWei').Value := trim(edtKuWei.Text); end; end; ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; end end; procedure TfrmPieceSampleKcListSEL.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin // InitImage(); end; procedure TfrmPieceSampleKcListSEL.ToolButton3Click(Sender: TObject); begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('exec P_Up_SampleKcAll'); execsql; end; end; procedure TfrmPieceSampleKcListSEL.btn2Click(Sender: TObject); var maxno, maxno2: string; F1: string; begin if trim(Edit1.Text) = '' then exit; if trim(edtKuWei.Text) = '' then exit; try ADOQueryCmd.Connection.BeginTrans; F1 := CDS_Main.FieldByName('CRNO').AsString; while CDS_Main.Locate('SSel', true, []) do begin if F1 <> trim(CDS_Main.FieldByName('CRNO').AsString) then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('不能选择多个库存!', '提示', 0); Exit; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from CK_Sample_CR where crno= ' + quotedstr(trim(CDS_Main.FieldByName('CRNO').AsString))); Open; end; if (StrToFloat(Edit1.Text) < (ADOQueryCmd.FieldByName('kcqty').AsFloat)) then begin if GetLSNo(ADOQueryTmp, maxno, 'SPR', 'CK_Sample_CR', 3, 1) = False then //ADOQueryTmp yaoduiyingma begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; if GetLSNo(ADOQueryTmp, maxno2, 'SPC', 'CK_Sample_CR', 3, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; with ADOQueryCmd do begin close; sql.Clear; sql.Add('exec P_Up_BPCP @rkID=' + quotedstr(trim(CDS_Main.fieldbyname('crno').AsString))); sql.Add(',@maxno=' + quotedstr(trim(maxno))); SQL.Add(',@fqty=' + quotedstr(trim(Edit1.Text))); SQL.Add(',@kuwei=' + quotedstr(Trim(edtkuwei.text))); sql.Add(',@maxno2=' + quotedstr(trim(maxno2))); sql.Add(',@filler=' + quotedstr(trim(DName))); ExecSQL; end; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('exec P_Up_SampleKc ' + quotedstr(trim(CDS_Main.fieldbyname('MJID').AsString))); Open; end; if Trim(ADOQueryCmd.FieldByName('Msg').AsString) = '操作失败' then begin CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('出库数量超出库存数量!', '提示', 0); Exit; end; with CDS_Main do begin Edit; FieldByName('SSel').Value := false; end; end; end; ADOQueryCmd.Connection.CommitTrans; Application.MessageBox('分匹成功!', '提示', 0); except ADOQueryCmd.Connection.RollbackTrans; end end; procedure TfrmPieceSampleKcListSEL.btn1Click(Sender: TObject); begin if Panel2.Visible = False then begin Panel2.Visible := True; lbl2.Visible := True; Edit1.Visible := True; btn2.visible := True; Button1.Visible := False; end else Panel2.Visible := False; end; procedure TfrmPieceSampleKcListSEL.BTLPClick(Sender: TObject); begin if CurrentPage > 1 then CurrentPage := CurrentPage - 1; InitGrid(); end; procedure TfrmPieceSampleKcListSEL.BTNPClick(Sender: TObject); begin if CurrentPage < CDS_Main.FieldByName('TotalCount').AsInteger / RecordsNumber then CurrentPage := CurrentPage + 1; InitGrid(); end; procedure TfrmPieceSampleKcListSEL.TCBNORChange(Sender: TObject); begin RecordsNumber := StrToInt(TCBNOR.Text); CurrentPage := 1; InitGrid(); end; procedure TfrmPieceSampleKcListSEL.P_CodeKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin InitGrid(); end; end; procedure TfrmPieceSampleKcListSEL.Tv1CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); begin if AViewInfo.GridRecord.Values[Tv1Column2.Index] = '样品仓库' then begin ACanvas.font.Color := clRed; end; if AViewInfo.GridRecord.Values[Tv1Column2.Index] = '调样仓库' then begin ACanvas.font.Color := clblue; end; end; procedure TfrmPieceSampleKcListSEL.CKTYPEChange(Sender: TObject); begin InitGrid(); end; end.