unit U_PBCKMXLR; interface uses Windows, Messages, SysUtils, StrUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, MMSystem, cxDataStorage, cxEdit, DB, cxDBData, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, StdCtrls, ComCtrls, ExtCtrls, ToolWin, cxButtonEdit, cxDropDownEdit, DBClient, ADODB, cxGridCustomPopupMenu, cxGridPopupMenu, BtnEdit, cxContainer, cxTextEdit, cxCurrencyEdit, cxCheckBox, Menus, RM_Common, RM_Class, RM_e_Xls, RM_Dataset, RM_System, RM_GridReport, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxSkinsCore, dxSkinsDefaultPainters, dxSkinscxPCPainter; type TfrmPBCKMXLR = class(TForm) ToolBar1: TToolBar; TBSave: TToolButton; TBClose: TToolButton; ADOQueryCmd: TADOQuery; ADOQueryTmp: TADOQuery; DataSource1: TDataSource; CDS_Main: TClientDataSet; cxGridPopupMenu1: TcxGridPopupMenu; Panel3: TPanel; ADOQueryMain: TADOQuery; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; ADOQueryPrint: TADOQuery; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; RMXLSExport1: TRMXLSExport; ToolButton1: TToolButton; ToolButton2: TToolButton; cxGrid2: TcxGrid; TvMX: TcxGridDBTableView; cxGridDBColumn8: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; Panel1: TPanel; Label3: TLabel; cxCurrencyEdit1: TcxCurrencyEdit; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure TBSaveClick(Sender: TObject); procedure v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure TBCloseClick(Sender: TObject); procedure FHAddressBtnDnClick(Sender: TObject); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure TvMXCustomDrawIndicatorCell(Sender: TcxGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxCustomGridIndicatorItemViewInfo; var ADone: Boolean); procedure cxCurrencyEdit1KeyPress(Sender: TObject; var Key: Char); private procedure InitGrid(); function savedate(): Boolean; { Private declarations } public fkeyNO, FMXGangHao: string; FType: integer; fCKName: string; { Public declarations } end; var frmPBCKMXLR: TfrmPBCKMXLR; implementation uses U_DataLink, U_Fun10, U_ZDYHelp; {$R *.dfm} function TfrmPBCKMXLR.savedate(): Boolean; var MaxNo: string; begin result := false; try ADOQueryCmd.Connection.BeginTrans; CDS_Main.DisableControls; CDS_Main.First; with CDS_Main do begin while not eof do begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('select * from CK_SXPB_CRMX'); sql.Add('where MXID=' + quotedstr(Trim(CDS_Main.FieldByName('MXID').AsString))); open; end; if ADOQueryCmd.IsEmpty then begin if GetLSNo(ADOQueryTmp, MaxNo, 'MCM', 'CK_SXPB_CRMX', 4, 1) = False then begin Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; ADOQueryCmd.Append; end else begin MaxNo := Trim(CDS_Main.FieldByName('MXID').AsString); ADOQueryCmd.Edit; end; //保存明细 RTSetSaveDataCDS(ADOQueryCmd, TvMX, CDS_Main, 'CK_SXPB_CRMX', 0); //保存隐藏ID ADOQueryCmd.FieldByName('CRNO').Value := trim(fkeyNo); ADOQueryCmd.FieldByName('MXID').Value := trim(MaxNo); ADOQueryCmd.Post; CDS_Main.Edit; CDS_Main.FieldByName('MXID').Value := trim(MaxNo); CDS_Main.post; //更新库存 with ADOQueryCmd do begin Close; SQL.Clear; SQL.Add('exec P_Up_MlKcByMx ' + quotedstr(trim(fkeyNo))); Open; end; if Trim(ADOQueryCmd.FieldByName('Msg').AsString) = '操作失败' then begin CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('入库数量少于出库数量!', '提示', 0); Exit; end; CDS_Main.next; end; end; CDS_Main.EnableControls; ADOQueryCmd.Connection.CommitTrans; result := true; except CDS_Main.EnableControls; ADOQueryCmd.Connection.RollbackTrans; end; end; procedure TfrmPBCKMXLR.InitGrid(); begin try with adoqueryMain do begin close; sql.Clear; sql.Add('select * from CK_SXPB_CRMX where CRNO=' + quotedstr(trim(fkeyNO))); sql.Add(' order by MXID'); open; end; SCreateCDS20(adoqueryMain, CDS_Main); SInitCDSData20(adoqueryMain, CDS_Main); finally end; end; procedure TfrmPBCKMXLR.FormDestroy(Sender: TObject); begin frmPBCKMXLR := nil; end; procedure TfrmPBCKMXLR.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := cahide; end; procedure TfrmPBCKMXLR.FormShow(Sender: TObject); var fbhType, fInoutNo: string; begin readCxGrid(self.Caption, TvMX, '面料仓库'); InitGrid(); end; procedure TfrmPBCKMXLR.TBSaveClick(Sender: TObject); begin if cds_main.IsEmpty then exit; ToolBar1.SetFocus; if savedate() then begin application.MessageBox('数据保存成功!', '提示信息'); end else begin application.MessageBox('数据保存失败!', '提示信息', MB_ICONERROR); end; end; procedure TfrmPBCKMXLR.v1P_CodeNamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'Cloth'; flagname := '坯布名称'; if ShowModal = 1 then begin Self.CDS_Main.Edit; Self.CDS_Main.FieldByName('P_CodeName').Value := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); Self.CDS_Main.FieldByName('P_Code').Value := Trim(ClientDataSet1.fieldbyname('ZDYNo').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmPBCKMXLR.TBCloseClick(Sender: TObject); begin writeCxGrid(self.Caption, TvMX, '面料仓库'); ModalResult := 1; end; procedure TfrmPBCKMXLR.FHAddressBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmPBCKMXLR.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, True); end; procedure TfrmPBCKMXLR.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, False); end; procedure TfrmPBCKMXLR.ToolButton1Click(Sender: TObject); var i: Integer; FGANGNO: string; begin for i := 1 to 10 do begin with CDS_Main do begin Append; FieldByName('MXQty').Value := 0; Post; end; end; end; procedure TfrmPBCKMXLR.ToolButton2Click(Sender: TObject); begin if cds_main.IsEmpty then exit; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('delete CK_SXPB_CRMX where MXID=' + quotedstr(Trim(CDS_Main.FieldByName('MXID').AsString))); ExecSQL; end; CDS_Main.Delete; end; procedure TfrmPBCKMXLR.TvMXCustomDrawIndicatorCell(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, clBtnHighlight, clBtnShadow, [bBottom, bLeft, bRight], 1); FValue := IntToStr(TcxGridIndicatorRowItemViewInfo(AViewInfo).GridRecord.Index + 1); InflateRect(FBounds, -1, -1); //Platform specific. May not work on Linux. ACanvas.Font.Color := clBlack; ACanvas.Brush.Style := bsClear; ACanvas.DrawText(FValue, FBounds, cxAlignCenter or cxAlignTop); ADone := True; end; end; procedure TfrmPBCKMXLR.cxCurrencyEdit1KeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin with CDS_Main do begin Append; FieldByName('MXQty').Value := StrToFloatDef(cxCurrencyEdit1.Text, 0); cxCurrencyEdit1.Text := ''; Post; end; end; end; end.