unit U_KnitClothOutEdit; interface uses Windows, Messages, strUtils, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, ExtCtrls, ADODB, DBClient, cxGridCustomPopupMenu, cxGridPopupMenu, cxGridLevel, MMSystem, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, MovePanel, cxCheckBox, Menus, ComCtrls, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxBarBuiltInMenu, RM_Common, RM_Class, RM_GridReport, RM_Dataset, Vcl.ToolWin; type TfrmKnitClothOutEdit = class(TfrmBaseList) GPM_1: TcxGridPopupMenu; CDS_1: TClientDataSet; DS_1: TDataSource; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; ADOQueryMain: TADOQuery; Panel1: TPanel; CDS_2: TClientDataSet; DS_2: TDataSource; GPM_2: TcxGridPopupMenu; DS_3: TDataSource; CDS_3: TClientDataSet; GPM_3: TcxGridPopupMenu; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v1OrderNo: TcxGridDBColumn; v2Column2: TcxGridDBColumn; cxGridDBColumn2: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column14: TcxGridDBColumn; cxGridDBColumn3: TcxGridDBColumn; v1PRTMF: TcxGridDBColumn; v1PRTKZ: TcxGridDBColumn; cxGrid2Level1: TcxGridLevel; Panel2: TPanel; Panel4: TPanel; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; v1Column6: TcxGridDBColumn; v1Column1: TcxGridDBColumn; v1Column11: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column3: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; v2Column6: TcxGridDBColumn; v2Column5: TcxGridDBColumn; cxGrid1Level1: TcxGridLevel; ToolBar1: TToolBar; ToolButton2: TToolButton; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; v3Column5: TcxGridDBColumn; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn4: TcxGridDBColumn; v3MJID: TcxGridDBColumn; v3Column3: TcxGridDBColumn; Tv3Column1: TcxGridDBColumn; v3Column4: TcxGridDBColumn; cxGridDBColumn6: TcxGridDBColumn; v3Column1: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; ToolBar2: TToolBar; ToolButton1: TToolButton; Panel3: TPanel; Label4: TLabel; Label5: TLabel; Label11: TLabel; DlyDate: TDateTimePicker; DRMID: TEdit; OutType: TComboBox; ToolBar3: TToolBar; ToolButton3: TToolButton; btnGetOutNo: TToolButton; ToolButton6: TToolButton; ToolButton7: TToolButton; ToolButton8: TToolButton; edtScan: TEdit; Label6: TLabel; ToolButton9: TToolButton; ToolButton10: TToolButton; ToolButton11: TToolButton; ToolButton12: TToolButton; Tv2Column2: TcxGridDBColumn; ToolButton4: TToolButton; ToolButton5: TToolButton; Label1: TLabel; ToCoName: TEdit; Pnl_msg: TPanel; Tv3Column2: TcxGridDBColumn; Tv1Column2: TcxGridDBColumn; Tv3Column3: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormDestroy(Sender: TObject); procedure FormShow(Sender: TObject); procedure Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure ToolButton1Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure btnGetOutNoClick(Sender: TObject); procedure ToolButton7Click(Sender: TObject); procedure ToolButton8Click(Sender: TObject); procedure edtScanKeyPress(Sender: TObject; var Key: Char); procedure ToolButton9Click(Sender: TObject); procedure ToolButton10Click(Sender: TObject); procedure ToolButton11Click(Sender: TObject); procedure ToolButton12Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); private { Private declarations } FScan, FSubIds: string; procedure PlayWav(MMsg: string); procedure InitDR(MDRMID: string); procedure InitGrid1(); procedure InitGrid2(); procedure InitGrid3(); procedure ScanInNo(); procedure ScanCIID(); public { Public declarations } end; var frmKnitClothOutEdit: TfrmKnitClothOutEdit; implementation uses U_DataLink, U_RTFun, U_KnitClothWaitReleased, U_LabelPrint, U_KnitDRQuickInPut, U_KnitDRQuickSel; {$R *.dfm} procedure TfrmKnitClothOutEdit.PlayWav(MMsg: string); begin if (MMsg = '隐藏') or (MMsg = '正确') then Pnl_msg.Visible := False else begin Pnl_msg.Visible := true; Pnl_msg.Caption := MMsg; end; if FileExists(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MMsg + '.wav')) then begin PlaySound(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MMsg + '.wav'), 0, SND_ASYNC); end else begin MMsg := '发货错误'; if FileExists(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MMsg + '.wav')) then PlaySound(PChar(ExtractFilePath(Application.ExeName) + 'wav\' + MMsg + '.wav'), 0, SND_ASYNC); end; end; procedure TfrmKnitClothOutEdit.InitDR(MDRMID: string); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('exec P_Fin_Flow_Judge '); Sql.Add(' @FFIDS=' + quotedstr(Trim(MDRMID))); Sql.Add(',@DCode=' + quotedstr(Trim(DCode))); Sql.Add(',@DName=' + quotedstr(Trim(DName))); Open; end; if ADOQueryTemp.FieldByName('intReturn').AsInteger = -1 then begin Application.MessageBox(PChar(ADOQueryTemp.fieldbyname('ShowMsg').AsString), '提示', 0); DRMID.Text := ''; end else begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from Knit_Cloth_DR_Main A where A.DRMID=''' + Trim(MDRMID) + ''''); Open; end; SCSHData(ADOQueryTemp, Panel3, 8); end; end; procedure TfrmKnitClothOutEdit.InitGrid2(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select * from '); sql.Add('(select KC.MainId,KC.SubID ,ZPPS=Count(KC.StkID),ZPKGQty=sum(StkGrossWeight),ZPQty=sum(StkMeter) '); sql.Add(' from Knit_Cloth_Stock KC where KC.StkExists=1 and 1=2 group by KC.MainId,KC.SubID ) AA '); sql.Add(' left join Knit_Plan_Main BB on AA.MainId=BB.MainID '); sql.Add(' left join Knit_Plan_Sub CC on AA.SubID=CC.SubID '); // ShowMessage(sql.Text); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); end; procedure TfrmKnitClothOutEdit.InitGrid1(); begin with ADOQueryMain do begin Close; sql.Clear; sql.Add('select A.IOFlag,A.IONo,A.IOID,B.* from Knit_Cloth_IO A '); sql.Add('inner join Knit_Cloth_Stock B on A.StkId=B.StkId and A.IOCycles=B.StkCycles '); sql.Add('where A.IOFlag=''入库'' and B.StkExists=1 '); if TRIm(FSubIds) <> '' then sql.add('and SubId in (' + FSubIds + ')') else sql.add('and 1=2'); Open; end; TV1.DataController.Filter.Clear; SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; procedure TfrmKnitClothOutEdit.InitGrid3(); begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.IOFlag,A.IONo,A.IOID,A.filltime,B.* from Knit_Cloth_IO A '); sql.Add('inner join Knit_Cloth_Stock B on A.StkId=B.StkId and A.IOCycles=B.StkCycles '); sql.Add('where A.IOFlag=''出库'' and B.StkExists=0 '); if TRIm(DRMID.Text) <> '' then sql.add('and IONO =' + QuotedStr(TRIm(DRMID.Text))) else sql.add('and 1=2'); sql.add(' order by A.filltime desc'); Open; end; SCreateCDS(ADOQueryTemp, CDS_3); SInitCDSData(ADOQueryTemp, CDS_3); end; procedure TfrmKnitClothOutEdit.ScanInNo(); var MStkIds: string; begin try if Trim(DRMID.Text) = '' then raise Exception.Create('出库单号不能为空!'); if CDS_2.IsEmpty then raise Exception.Create('未选单不能扫描出库!'); if not CDS_1.Locate('IONo', Trim(FScan), []) then raise Exception.Create('此入库单不包含在待出库的卷数据中'); MStkIds := ''; with CDS_1 do begin First; while CDS_1.Locate('IONo', Trim(FScan), []) = True do begin MStkIds := MStkIds + (Trim(CDS_1.FieldByName('StkId').AsString)) + ','; CDS_1.Delete; end; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule) '); sql.Add('values(''针织成品出库'' '); sql.Add(',' + quotedstr(DRMID.Text)); sql.Add(',''出库'' '); sql.Add(',' + quotedstr(dname)); sql.Add(',' + quotedstr(self.Caption)); sql.Add(') '); Sql.Add('exec P_Knit_Cloth_Out '); Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', DlyDate.DateTime))); Sql.Add(',@IOType=' + Quotedstr(OutType.Text)); Sql.Add(',@IONO=' + Quotedstr(DRMID.Text)); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); InitGrid3(); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmKnitClothOutEdit.ScanCIID(); var MStkIds: string; begin try if Trim(DRMID.Text) = '' then raise Exception.Create('出库单号不能为空!'); if CDS_2.IsEmpty then raise Exception.Create('未选单不能扫描出库!'); with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select stkid from Knit_Cloth_IO X where IOFlag=''入库'' AND X.stkid=' + quotedstr(FScan)); Open; end; if ADOQueryTemp.IsEmpty then begin raise Exception.Create('条码未入库'); end; with ADOQueryTemp do begin Close; sql.Clear; sql.Add(' select stkid from Knit_Cloth_IO X where IOFlag=''出库'' AND X.stkid=' + quotedstr(FScan)); Open; end; if not ADOQueryTemp.IsEmpty then begin raise Exception.Create('条码已出库'); end; if not CDS_1.Locate('StkId', Trim(FScan), []) then raise Exception.Create('此条码不包含在待出库的卷数据中'); try ADOQueryCmd.Connection.BeginTrans; MStkIds := (Trim(CDS_1.FieldByName('StkId').AsString)); CDS_1.Delete; with ADOQueryCmd do begin Close; Sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule) '); sql.Add('values(''针织成品出库'' '); sql.Add(',' + quotedstr(DRMID.Text)); sql.Add(',''出库'' '); sql.Add(',' + quotedstr(dname)); sql.Add(',' + quotedstr(self.Caption)); sql.Add(') '); Sql.Add('exec P_Knit_Cloth_Out '); Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', DlyDate.DateTime))); Sql.Add(',@IOType=' + Quotedstr(OutType.Text)); Sql.Add(',@IONO=' + Quotedstr(DRMID.Text)); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); InitGrid3(); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except // application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); PlayWav(PChar(Exception(ExceptObject).Message)); end; end; procedure TfrmKnitClothOutEdit.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmKnitClothOutEdit.FormDestroy(Sender: TObject); begin inherited; frmKnitClothOutEdit := nil; end; procedure TfrmKnitClothOutEdit.FormShow(Sender: TObject); begin inherited; ReadCxGrid(self.caption + 'Tv1', Tv1, '成品仓库'); ReadCxGrid(self.caption + 'Tv2', Tv2, '成品仓库'); ReadCxGrid(self.caption + 'Tv3', Tv3, '成品仓库'); InitGrid2(); InitGrid1(); InitGrid3(); DlyDate.DateTime := SGetServerDate(ADOQueryTemp); end; procedure TfrmKnitClothOutEdit.Tv2CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if CDS_3.IsEmpty = False then Exit; if CDS_2.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; CDS_1.DisableControls; with CDS_1 do begin First; while not Eof do begin if Trim(CDS_1.fieldbyname('SubId').AsString) = Trim(CDS_2.fieldbyname('SubId').AsString) then begin CDS_1.Delete; end else Next; end; end; CDS_1.EnableControls; CDS_2.Delete; end; procedure TfrmKnitClothOutEdit.edtScanKeyPress(Sender: TObject; var Key: Char); var maxno, SMFlag, KYCKFlag, FMainId, ff: string; FFQty: Integer; begin if Key = #13 then begin PlayWav('隐藏'); if TRIM(edtScan.Text) = '' then Exit; FScan := TRIM(edtScan.Text); edtScan.Text := ''; if Copy(FScan, 1, 2) = 'RK' then begin ScanInNo(); end else begin ScanCIID(); end; end; end; procedure TfrmKnitClothOutEdit.ToolButton10Click(Sender: TObject); begin SelOKNo(CDS_1, False); end; procedure TfrmKnitClothOutEdit.ToolButton11Click(Sender: TObject); begin SelOKNo(CDS_3, True); end; procedure TfrmKnitClothOutEdit.ToolButton12Click(Sender: TObject); begin SelOKNo(CDS_3, False); end; procedure TfrmKnitClothOutEdit.ToolButton1Click(Sender: TObject); var MStkIds, MIOIDS: string; begin if CDS_3.IsEmpty then Exit; if Application.MessageBox('确定要执行此操作吗?', '提示', 32 + 4) <> IDYES then Exit; MStkIds := ''; MIOIDS := ''; with CDS_3 do begin while CDS_3.Locate('SSel', True, []) do begin MStkIds := MStkIds + (Trim(CDS_3.FieldByName('StkId').AsString)) + ','; MIOIDS := MIOIDS + (Trim(CDS_3.FieldByName('IOID').AsString)) + ','; CDS_3.Delete; end; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); MIOIDS := copy(MIOIDS, 1, Length(MIOIDS) - 1); try try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule,UDetails) '); sql.Add('values(''针织成品出库'' '); sql.Add(',' + quotedstr(DRMID.Text)); sql.Add(',''撤销出库'' '); sql.Add(',' + quotedstr(dname)); sql.Add(',' + quotedstr(self.Caption)); sql.Add(',' + quotedstr(MStkIds)); sql.Add(') '); Sql.Add('exec P_Knit_Cloth_ReOut '); Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOIDS=' + quotedstr(trim(MIOIDS))); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); InitGrid1(); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except InitGrid1(); InitGrid3(); application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmKnitClothOutEdit.ToolButton2Click(Sender: TObject); var MStkIds: string; begin try if Trim(DRMID.Text) = '' then raise Exception.Create('出库单号不能为空!'); if CDS_2.IsEmpty then raise Exception.Create('未选单不能扫描出库!'); if not CDS_1.Locate('SSel', True, []) then raise Exception.Create('请选择数据'); MStkIds := ''; with CDS_1 do begin while CDS_1.Locate('SSel', True, []) = True do begin MStkIds := MStkIds + (Trim(CDS_1.FieldByName('StkId').AsString)) + ','; CDS_1.Delete; end; end; MStkIds := copy(MStkIds, 1, Length(MStkIds) - 1); try ADOQueryCmd.Connection.BeginTrans; with ADOQueryCmd do begin Close; Sql.Clear; sql.Add('insert into Finance_Need_Up(UType,UDataId,UOperation,UOperator,UModule) '); sql.Add('values(''针织成品出库'' '); sql.Add(',' + quotedstr(DRMID.Text)); sql.Add(',''出库'' '); sql.Add(',' + quotedstr(dname)); sql.Add(',' + quotedstr(self.Caption)); sql.Add(') '); Sql.Add('exec P_Knit_Cloth_Out '); Sql.Add(' @StkIds=' + quotedstr(trim(MStkIds))); Sql.Add(',@IOTime=' + Quotedstr(FormatDateTime('yyyy-MM-dd', DlyDate.DateTime))); Sql.Add(',@IOType=' + Quotedstr(OutType.Text)); Sql.Add(',@IONO=' + Quotedstr(DRMID.Text)); Sql.Add(',@FillId=' + Quotedstr(DCode)); Sql.Add(',@Filler=' + Quotedstr(DName)); Open; end; if ADOQueryCmd.FieldByName('intReturn').AsInteger = -1 then begin raise Exception.Create(pchar(trim(ADOQueryCmd.FieldByName('ShowMsg').AsString))); end; ADOQueryCmd.Connection.CommitTrans; PlayWav('正确'); InitGrid3(); except ADOQueryCmd.Connection.RollbackTrans; raise Exception.Create(PChar(Exception(ExceptObject).Message)); end; except InitGrid1(); InitGrid3(); application.MessageBox(PChar(Exception(ExceptObject).Message), '提示信息', 0); // PlayWav('发货错误'); end; end; procedure TfrmKnitClothOutEdit.ToolButton3Click(Sender: TObject); begin if Trim(DRMID.Text) = '' then Exit; try frmLabelPrint := TfrmLabelPrint.Create(Application); with frmLabelPrint do begin FLMType := 'KnitClothOut1'; FFiltration1 := Trim(Self.DRMID.Text); if ShowModal = 1 then begin end; end; finally frmLabelPrint.Free; end; end; procedure TfrmKnitClothOutEdit.ToolButton4Click(Sender: TObject); begin FSubIds := ''; InitGrid2(); end; procedure TfrmKnitClothOutEdit.ToolButton5Click(Sender: TObject); var MKey: Char; begin MKey := #13; try frmKnitDRQuickSel := TfrmKnitDRQuickSel.Create(self); with frmKnitDRQuickSel do begin if ShowModal = 1 then begin self.InitDR(Order_Main.fieldbyname('DRMID').AsString); Self.InitGrid2(); Self.InitGrid1(); Self.InitGrid3(); end; end; finally frmKnitDRQuickSel.Free; end; end; procedure TfrmKnitClothOutEdit.btnGetOutNoClick(Sender: TObject); begin try frmKnitDRQuickInPut := TfrmKnitDRQuickInPut.Create(Application); with frmKnitDRQuickInPut do begin if ShowModal = 1 then begin Self.InitDR(FDRMID); Self.InitGrid2(); Self.InitGrid1(); Self.InitGrid3(); end; end; finally frmKnitDRQuickInPut.Free; end; end; procedure TfrmKnitClothOutEdit.ToolButton6Click(Sender: TObject); var maxno, fsj: string; begin if Trim(DRMID.Text) = '' then begin Application.MessageBox('请先选择出库单号!', '提示', 0); Exit; end; try frmKnitClothWaitReleased := TfrmKnitClothWaitReleased.Create(Application); with frmKnitClothWaitReleased do begin if ShowModal = 1 then begin CDS_OrderSel.DisableControls; with CDS_OrderSel do begin First; while not Eof do begin if FieldByName('SSel').Value = True then begin if Self.CDS_2.Locate('SubId', Trim(CDS_OrderSel.fieldbyname('SubId').AsString), []) = False then begin with Self.CDS_2 do begin Append; FieldByName('OrderNo').Value := Trim(CDS_OrderSel.fieldbyname('OrderNo').AsString); FieldByName('MainId').Value := Trim(CDS_OrderSel.fieldbyname('MainId').AsString); FieldByName('SubId').Value := Trim(CDS_OrderSel.fieldbyname('SubId').AsString); FieldByName('CustNo').Value := Trim(CDS_OrderSel.fieldbyname('CustNo').AsString); FieldByName('CustName').Value := Trim(CDS_OrderSel.fieldbyname('CustName').AsString); FieldByName('C_Name').Value := Trim(CDS_OrderSel.fieldbyname('C_Name').AsString); FieldByName('ZPQty').Value := CDS_OrderSel.fieldbyname('ZPQty').Value; FieldByName('ZPQty').Value := CDS_OrderSel.fieldbyname('ZPQty').Value; FieldByName('OrdUnit').Value := Trim(CDS_OrderSel.fieldbyname('OrdUnit').AsString); FieldByName('C_Color').Value := Trim(CDS_OrderSel.fieldbyname('C_Color').AsString); FieldByName('C_Width').Value := Trim(CDS_OrderSel.fieldbyname('C_Width').AsString); FieldByName('C_GramWeight').Value := Trim(CDS_OrderSel.fieldbyname('C_GramWeight').AsString); Post; end; end; end; Next; end; end; CDS_OrderSel.EnableControls; end; end; finally frmKnitClothWaitReleased.Free; end; FSubIds := ''; CDS_2.DisableControls; with CDS_2 do begin First; while not Eof do begin FSubIds := FSubIds + Quotedstr(Trim(CDS_2.FieldByName('SubId').AsString)) + ','; Next; end; end; FSubIds := copy(FSubIds, 1, Length(FSubIds) - 1); CDS_2.EnableControls; InitGrid1(); InitGrid3(); end; procedure TfrmKnitClothOutEdit.ToolButton7Click(Sender: TObject); begin tv1.Controller.EditingController.ShowEdit(); tv3.Controller.EditingController.ShowEdit(); Close; end; procedure TfrmKnitClothOutEdit.ToolButton8Click(Sender: TObject); begin WriteCxGrid(self.caption + 'Tv2', Tv2, '成品仓库'); WriteCxGrid(self.caption + 'Tv1', Tv1, '成品仓库'); WriteCxGrid(self.caption + 'Tv3', Tv3, '成品仓库'); end; procedure TfrmKnitClothOutEdit.ToolButton9Click(Sender: TObject); begin SelOKNo(CDS_1, True); end; end.