unit U_DyeProcessDefin; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, ADODB, DBClient, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, ComCtrls, ToolWin, cxGridCustomPopupMenu, cxGridPopupMenu, cxTextEdit, cxButtonEdit, StdCtrls, ExtCtrls, cxCurrencyEdit, BtnEdit, U_BaseList, cxLookAndFeels, cxLookAndFeelPainters, dxSkinsCore, dxSkinsDefaultPainters, cxNavigator, dxDateRanges, dxBarBuiltInMenu, cxCheckBox, cxDropDownEdit, dxSkinBasic, dxSkinBlack, dxSkinBlue, dxSkinBlueprint, dxSkinCaramel, dxSkinCoffee, dxSkinDarkroom, dxSkinDarkSide, dxSkinDevExpressDarkStyle, dxSkinDevExpressStyle, dxSkinFoggy, dxSkinGlassOceans, dxSkinHighContrast, dxSkiniMaginary, dxSkinLilian, dxSkinLiquidSky, dxSkinLondonLiquidSky, dxSkinMcSkin, dxSkinMetropolis, dxSkinMetropolisDark, dxSkinMoneyTwins, dxSkinOffice2007Black, dxSkinOffice2007Blue, dxSkinOffice2007Green, dxSkinOffice2007Pink, dxSkinOffice2007Silver, dxSkinOffice2010Black, dxSkinOffice2010Blue, dxSkinOffice2010Silver, dxSkinOffice2013DarkGray, dxSkinOffice2013LightGray, dxSkinOffice2013White, dxSkinOffice2016Colorful, dxSkinOffice2016Dark, dxSkinOffice2019Black, dxSkinOffice2019Colorful, dxSkinOffice2019DarkGray, dxSkinOffice2019White, dxSkinPumpkin, dxSkinSeven, dxSkinSevenClassic, dxSkinSharp, dxSkinSharpPlus, dxSkinSilver, dxSkinSpringtime, dxSkinStardust, dxSkinSummer2008, dxSkinTheAsphaltWorld, dxSkinTheBezier, dxSkinValentine, dxSkinVisualStudio2013Blue, dxSkinVisualStudio2013Dark, dxSkinVisualStudio2013Light, dxSkinVS2010, dxSkinWhiteprint, dxSkinWXI, dxSkinXmas2008Blue, cxContainer, cxLabel, cxPC, dxScrollbarAnnotations, cxMaskEdit, Vcl.Menus, cxButtons; type TfrmDyeProcessDefin = class(TForm) ToolBar1: TToolBar; TbSave: TToolButton; TBClose: TToolButton; ADOQueryCmd: TADOQuery; ADOQueryTemp: TADOQuery; TbUpFile: TToolButton; CDS_1: TClientDataSet; DS_1: TDataSource; GPM_1: TcxGridPopupMenu; cxPageControl1: TcxPageControl; cxTabSheet2: TcxTabSheet; cxTabSheet3: TcxTabSheet; cxTabSheet4: TcxTabSheet; cxGrid2: TcxGrid; Tv1: TcxGridDBTableView; Tv11fs_Name: TcxGridDBColumn; Tv11fs_spel: TcxGridDBColumn; Tv1fs_unit: TcxGridDBColumn; Tv11fs_rate: TcxGridDBColumn; Tv11fs_precautions: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; cxTabSheet5: TcxTabSheet; cxGrid1: TcxGrid; Tv2: TcxGridDBTableView; Tv2fp_Name: TcxGridDBColumn; Tv2fp_spel: TcxGridDBColumn; Tv2fp_unit: TcxGridDBColumn; Tv2fp_rate: TcxGridDBColumn; Tv2fp_precautions: TcxGridDBColumn; cxGridDBColumn16: TcxGridDBColumn; cxGridDBColumn17: TcxGridDBColumn; cxGridDBColumn18: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; cxTabSheet6: TcxTabSheet; cxGrid3: TcxGrid; Tv3: TcxGridDBTableView; Tv3gj_Name: TcxGridDBColumn; Tv3gj_spel: TcxGridDBColumn; Tv3gj_unit: TcxGridDBColumn; TV3gj_rate: TcxGridDBColumn; Tv3gj_precautions: TcxGridDBColumn; cxGridDBColumn26: TcxGridDBColumn; cxGridDBColumn27: TcxGridDBColumn; cxGridDBColumn28: TcxGridDBColumn; cxGridLevel3: TcxGridLevel; Panel2: TPanel; cxLabel10: TcxLabel; cxLabel11: TcxLabel; cxLabel12: TcxLabel; cxLabel13: TcxLabel; cxLabel14: TcxLabel; cxLabel15: TcxLabel; cxLabel16: TcxLabel; cxLabel17: TcxLabel; cxLabel18: TcxLabel; cxLabel19: TcxLabel; cxLabel20: TcxLabel; cxLabel7: TcxLabel; cxLabel8: TcxLabel; cxLabel9: TcxLabel; qx_WaterContent: TcxTextEdit; qx_Add_Name: TcxTextEdit; qx_Precautions: TcxTextEdit; qx_temperature4: TcxTextEdit; qx_temperature2: TcxTextEdit; qx_temperature1: TcxTextEdit; qx_temperature3: TcxTextEdit; qx_temperature5: TcxTextEdit; qx_speed: TcxTextEdit; qx_ReduceAmplitude: TcxTextEdit; Panel3: TPanel; cxLabel1: TcxLabel; cxLabel2: TcxLabel; cxLabel21: TcxLabel; cxLabel22: TcxLabel; cxLabel23: TcxLabel; cxLabel24: TcxLabel; cxLabel25: TcxLabel; cxLabel26: TcxLabel; cxLabel27: TcxLabel; cxLabel28: TcxLabel; cxLabel3: TcxLabel; cxLabel4: TcxLabel; cxLabel5: TcxLabel; cxLabel55: TcxLabel; cxLabel56: TcxLabel; cxLabel57: TcxLabel; cxLabel58: TcxLabel; cxLabel59: TcxLabel; cxLabel6: TcxLabel; cxLabel60: TcxLabel; cxLabel61: TcxLabel; cxLabel62: TcxLabel; cxLabel63: TcxLabel; cxLabel64: TcxLabel; cxLabel65: TcxLabel; dx_OutFanSpeed: TcxTextEdit; dx_temperature1: TcxTextEdit; dx_WidthAmplitude: TcxTextEdit; dx_temperature5: TcxTextEdit; dx_temperature9: TcxTextEdit; dx_RosePower: TcxTextEdit; dx_BrushSuperRate: TcxTextEdit; dx_Precautions: TcxTextEdit; dx_UpSuperRate: TcxTextEdit; dx_speed: TcxTextEdit; dx_TubePress: TcxTextEdit; dx_temperature6: TcxTextEdit; dx_CycleFanSpeed: TcxTextEdit; dx_DownSuperRate: TcxTextEdit; dx_temperature3: TcxTextEdit; dx_temperature4: TcxTextEdit; dx_temperature7: TcxTextEdit; dx_temperature8: TcxTextEdit; dx_temperature10: TcxTextEdit; dx_temperature2: TcxTextEdit; Panel4: TPanel; cxLabel100: TcxLabel; cxLabel101: TcxLabel; cxLabel102: TcxLabel; cxLabel103: TcxLabel; cxLabel104: TcxLabel; cxLabel105: TcxLabel; cxLabel106: TcxLabel; cxLabel109: TcxLabel; cxLabel110: TcxLabel; cxLabel111: TcxLabel; cxLabel82: TcxLabel; cxLabel83: TcxLabel; cxLabel84: TcxLabel; cxLabel85: TcxLabel; cxLabel86: TcxLabel; cxLabel87: TcxLabel; cxLabel88: TcxLabel; cxLabel89: TcxLabel; cxLabel90: TcxLabel; cxLabel91: TcxLabel; cxLabel92: TcxLabel; cxLabel93: TcxLabel; cxLabel94: TcxLabel; cxLabel95: TcxLabel; cxLabel96: TcxLabel; cxLabel97: TcxLabel; cxLabel98: TcxLabel; cxLabel99: TcxLabel; fs_OutFanSpeed: TcxTextEdit; fs_temperature1: TcxTextEdit; fs_WidthAmplitude: TcxTextEdit; fs_temperature5: TcxTextEdit; fs_temperature9: TcxTextEdit; fs_RosePower: TcxTextEdit; fs_BrushSuperRate: TcxTextEdit; fs_Precautions: TcxTextEdit; fs_UpSuperRate: TcxTextEdit; fs_speed: TcxTextEdit; fs_TubePress: TcxTextEdit; fs_temperature6: TcxTextEdit; fs_CycleFanSpeed: TcxTextEdit; fs_DownSuperRate: TcxTextEdit; fs_temperature3: TcxTextEdit; fs_temperature4: TcxTextEdit; fs_temperature7: TcxTextEdit; fs_temperature8: TcxTextEdit; fs_temperature10: TcxTextEdit; fs_temperature2: TcxTextEdit; fs_CarPress: TcxTextEdit; fs_PressWaterContent: TcxTextEdit; Panel5: TPanel; cxLabel107: TcxLabel; cxLabel108: TcxLabel; cxLabel112: TcxLabel; cxLabel29: TcxLabel; cxLabel30: TcxLabel; cxLabel31: TcxLabel; cxLabel32: TcxLabel; cxLabel33: TcxLabel; cxLabel34: TcxLabel; cxLabel35: TcxLabel; cxLabel36: TcxLabel; cxLabel49: TcxLabel; cxLabel50: TcxLabel; cxLabel51: TcxLabel; cxLabel52: TcxLabel; cxLabel53: TcxLabel; cxLabel54: TcxLabel; cxLabel66: TcxLabel; cxLabel67: TcxLabel; cxLabel68: TcxLabel; cxLabel69: TcxLabel; cxLabel70: TcxLabel; cxLabel71: TcxLabel; cxLabel72: TcxLabel; cxLabel73: TcxLabel; cxLabel74: TcxLabel; cxLabel75: TcxLabel; cxLabel76: TcxLabel; cxLabel77: TcxLabel; cxLabel78: TcxLabel; cxLabel79: TcxLabel; cxLabel80: TcxLabel; cxLabel81: TcxLabel; fp_OutFanSpeed: TcxTextEdit; fp_temperature1: TcxTextEdit; fp_WidthAmplitude: TcxTextEdit; fp_temperature5: TcxTextEdit; fp_temperature9: TcxTextEdit; fp_RosePower: TcxTextEdit; fp_BrushSuperRate: TcxTextEdit; fp_Precautions: TcxTextEdit; fp_UpSuperRate: TcxTextEdit; fp_speed: TcxTextEdit; fp_TubePress: TcxTextEdit; fp_temperature6: TcxTextEdit; fp_CycleFanSpeed: TcxTextEdit; fp_DownSuperRate: TcxTextEdit; fp_temperature3: TcxTextEdit; fp_temperature4: TcxTextEdit; fp_temperature7: TcxTextEdit; fp_temperature8: TcxTextEdit; fp_temperature10: TcxTextEdit; fp_temperature2: TcxTextEdit; fp_LeftHeight: TcxTextEdit; fp_RightHeight: TcxTextEdit; fp_PumbMixElectricFrequency: TcxTextEdit; fp_SystemPress: TcxTextEdit; fp_MixElectricFrequency: TcxTextEdit; fp_GasFlow: TcxTextEdit; Panel6: TPanel; cxLabel116: TcxLabel; cxLabel117: TcxLabel; cxLabel118: TcxLabel; cxLabel119: TcxLabel; cxLabel120: TcxLabel; cxLabel121: TcxLabel; cxLabel122: TcxLabel; cxLabel123: TcxLabel; cxLabel124: TcxLabel; cxLabel125: TcxLabel; cxLabel126: TcxLabel; cxLabel127: TcxLabel; cxLabel128: TcxLabel; cxLabel129: TcxLabel; cxLabel130: TcxLabel; cxLabel131: TcxLabel; cxLabel132: TcxLabel; cxLabel133: TcxLabel; cxLabel134: TcxLabel; cxLabel135: TcxLabel; cxLabel136: TcxLabel; cxLabel137: TcxLabel; cxLabel138: TcxLabel; cxLabel139: TcxLabel; cxLabel140: TcxLabel; cxLabel141: TcxLabel; cxLabel142: TcxLabel; cxLabel143: TcxLabel; gj_temperature1: TcxTextEdit; gj_WidthAmplitude: TcxTextEdit; gj_temperature5: TcxTextEdit; gj_temperature9: TcxTextEdit; gj_RosePower: TcxTextEdit; gj_BrushSuperRate: TcxTextEdit; gj_Precautions: TcxTextEdit; gj_UpSuperRate: TcxTextEdit; gj_speed: TcxTextEdit; gj_TubePress: TcxTextEdit; gj_temperature6: TcxTextEdit; gj_CycleFanSpeed: TcxTextEdit; gj_DownSuperRate: TcxTextEdit; gj_temperature3: TcxTextEdit; gj_temperature4: TcxTextEdit; gj_temperature7: TcxTextEdit; gj_temperature8: TcxTextEdit; gj_temperature10: TcxTextEdit; gj_temperature2: TcxTextEdit; gj_LeftHeight: TcxTextEdit; gj_RightHeight: TcxTextEdit; gj_OutFanSpeed: TcxTextEdit; cxtabsheet7: TcxTabSheet; panel7: TPanel; cxLabel115: TcxLabel; cxLabel144: TcxLabel; cxLabel145: TcxLabel; cxLabel146: TcxLabel; cxLabel147: TcxLabel; cxLabel154: TcxLabel; cxLabel155: TcxLabel; cxLabel156: TcxLabel; zm_inoutSpeed: TcxTextEdit; zm_needle: TcxTextEdit; zm_Precautions: TcxTextEdit; zm_frequency: TcxTextEdit; zm_WidthAmplitude: TcxTextEdit; cxLabel148: TcxLabel; qx_Add_Number: TcxTextEdit; cxLabel149: TcxLabel; GPM_2: TcxGridPopupMenu; DS_2: TDataSource; cds_2: TClientDataSet; GPM_3: TcxGridPopupMenu; DS_3: TDataSource; CDS_3: TClientDataSet; Tv3Column1: TcxGridDBColumn; Tv1Column1: TcxGridDBColumn; Tv2Column1: TcxGridDBColumn; cxGridPopupMenu1: TcxGridPopupMenu; dx_UnpackingMethod: TcxComboBox; dx_OpenAmplitude: TcxComboBox; dx_RollMethod: TcxComboBox; fs_UnpackingMethod: TcxComboBox; fs_OpenAmplitude: TcxComboBox; fs_RollMethod: TcxComboBox; zm_UnpackingMethod: TcxComboBox; zm_RollMethod: TcxComboBox; cxLabel151: TcxLabel; cxLabel152: TcxLabel; cxLabel153: TcxLabel; cxLabel157: TcxLabel; cxLabel158: TcxLabel; fs_meter: TcxTextEdit; fs_useGlub: TcxTextEdit; fs_waterDistribution: TcxTextEdit; fs_useOneGlub: TcxTextEdit; fs_useOneMeter: TcxTextEdit; cxLabel159: TcxLabel; fp_useOneMeter: TcxTextEdit; cxLabel160: TcxLabel; fp_useOneGlub: TcxTextEdit; cxLabel161: TcxLabel; gj_useOneMeter: TcxTextEdit; cxLabel162: TcxLabel; gj_useOneGlub: TcxTextEdit; qx_UnpackingMethod: TcxComboBox; qx_RollMethod: TcxComboBox; zm_wagCloth: TcxTextEdit; fp_RollMethod: TcxComboBox; fp_UnpackingMethod: TcxComboBox; gj_RollMethod: TcxComboBox; gj_UnpackingMethod: TcxComboBox; fp_OpenAmplitude: TcxComboBox; gj_OpenAmplitude: TcxComboBox; ToolBar3: TToolBar; TbAdd2: TToolButton; TbDel2: TToolButton; ToolBar4: TToolBar; TbAdd1: TToolButton; TbDel1: TToolButton; ToolBar5: TToolBar; TbAdd3: TToolButton; TbDel3: TToolButton; TbCPReplace: TcxButton; TbDXReplace: TcxButton; TbFSReplace: TcxButton; TbFPReplace: TcxButton; TbGJReplace: TcxButton; cxButton1: TcxButton; cxButton2: TcxButton; TbDXClear: TcxButton; cxButton4: TcxButton; TbGJClear: TcxButton; Panel1: TPanel; PSName: TcxTextEdit; cxLabel43: TcxLabel; CDS_HZ: TClientDataSet; DS_HZ: TDataSource; Label5: TLabel; WorkHour: TEdit; Label2: TLabel; MachineName: TEdit; Label1: TLabel; note: TEdit; procedure FormShow(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TbSaveClick(Sender: TObject); procedure CYColorKeyPress(Sender: TObject; var Key: Char); procedure CYJGGYBtnDnClick(Sender: TObject); procedure C_WidthBtnDnClick(Sender: TObject); procedure C_WidthBtnUpClick(Sender: TObject); procedure SetXH(); procedure Tv11fs_unitPropertiesEditValueChanged(Sender: TObject); procedure Tv2fp_unitPropertiesEditValueChanged(Sender: TObject); procedure Tv3gj_unitPropertiesEditValueChanged(Sender: TObject); procedure fs_meterPropertiesChange(Sender: TObject); procedure TbAdd2Click(Sender: TObject); procedure TbDel2Click(Sender: TObject); procedure Tv2fp_NamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure TbAdd1Click(Sender: TObject); procedure TbDel1Click(Sender: TObject); procedure TbAdd3Click(Sender: TObject); procedure TbDel3Click(Sender: TObject); procedure Tv11fs_NamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure Tv3gj_NamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure TbCPReplaceClick(Sender: TObject); procedure TbDXReplaceClick(Sender: TObject); procedure TbFSReplaceClick(Sender: TObject); procedure TbFPReplaceClick(Sender: TObject); procedure TbGJReplaceClick(Sender: TObject); procedure cxButton1Click(Sender: TObject); procedure cxButton2Click(Sender: TObject); procedure TbDXClearClick(Sender: TObject); procedure cxButton4Click(Sender: TObject); procedure TbGJClearClick(Sender: TObject); private canshu1: string; Fint: Integer; procedure InitGrid(); procedure ArrangeTabsByDataset; function SaveData(): Boolean; function FindLastEditedTextEdit(AParent: TWinControl; const AHint: string): string; procedure FillAllTextEditsWithValue(AParent: TWinControl; const AHint, AValue: string; AExclude: TcxTextEdit = nil); procedure ClearAllTextEditsByHint(AParent: TWinControl; const AHint: string; AExclude: TcxTextEdit = nil); function CheckData(): Boolean; { Private declarations } public BtnInt: Integer; FPSType: string; FPSID: string; { Public declarations } end; var frmDyeProcessDefin: TfrmDyeProcessDefin; implementation uses U_DataLink, U_RTFun, U_iniParam, U_ZDYHelp, U_AttachmentUpload, U_ClothInfoSel, U_DyeProcessList, U_ProductInfoSel; // U_ProductInfoSel; {$R *.dfm} procedure TfrmDyeProcessDefin.SetXH(); var i: Integer; begin // with CDS_GX do // begin // First; // i := 1; // while not Eof do // begin // with CDS_GX do // begin // Edit; // FieldByName('XHNoTemp').Value := i; // Post; // end; // i := i + 1; // Next; // end; // end; // // with CDS_GX do // begin // CDS_GX.IndexFieldNames := ''; // First; // i := 1; // while not Eof do // begin // with CDS_GX do // begin // Edit; // FieldByName('SerialNo').Value := FieldByName('XHNoTemp').AsInteger; // Post; // end; // i := i + 1; // Next; // end; // CDS_GX.IndexFieldNames := 'SerialNo'; // end; end; procedure TfrmDyeProcessDefin.ArrangeTabsByDataset; var I: Integer; TabSheet: TcxTabSheet; CurrentIndex: Integer; begin // 初始化隐藏所有其他页面 for I := 0 to cxPageControl1.PageCount - 1 do cxPageControl1.Pages[I].TabVisible := False; // 设置当前索引 CurrentIndex := 0; // 根据工序名查找对应的页面 for I := 0 to cxPageControl1.PageCount - 1 do begin TabSheet := cxPageControl1.Pages[I] as TcxTabSheet; // 匹配工序名 if (Trim(TabSheet.Caption) = FPSType) then begin TabSheet.PageIndex := CurrentIndex; TabSheet.TabVisible := True; Inc(CurrentIndex); Break; end; end; // 刷新页面控件 cxPageControl1.Invalidate; end; procedure TfrmDyeProcessDefin.InitGrid(); var i: integer; begin with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from Bs_Cloth_GY_sub A '); sql.Add(' where gytype=''防水'' and A.PSID=''' + Trim(FPSID) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_1); SInitCDSData(ADOQueryTemp, CDS_1); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from Bs_Cloth_GY_sub A '); sql.Add(' where gytype=''发泡'' and A.PSID=''' + Trim(FPSID) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_2); SInitCDSData(ADOQueryTemp, CDS_2); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select A.* from Bs_Cloth_GY_sub A '); sql.Add(' where gytype=''刮胶'' and A.PSID=''' + Trim(FPSID) + ''''); Open; end; SCreateCDS(ADOQueryTemp, CDS_3); SInitCDSData(ADOQueryTemp, CDS_3); // C_FromName.TxtCode := Trim(ADOQueryTemp.fieldbyname('FromBCIID').AsString); // C_FromName.Text := Trim(ADOQueryTemp.fieldbyname('C_FromName').AsString); end; procedure TfrmDyeProcessDefin.FormShow(Sender: TObject); var MaxPSID, MaxProcessID, MaxBCPID: string; Maxid1, maxid2, maxid3, maxgx: string; begin InitGrid(); ArrangeTabsByDataset; if BtnInt = 0 then begin FPSID := ''; end; if (BtnInt = 1) or (BtnInt = 3) then //修改 begin with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from Dye_Process where PSID=''' + Trim(FPSID) + ''''); Open; end; SCSHData(ADOQueryTemp, Panel1, 2); with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from Bs_Cloth_GY_Main where PSID=''' + Trim(FPSID) + ''''); Open; end; if FPSType = '清洗' then begin SCSHData(ADOQueryTemp, Panel2, 2); end else if FPSType = '定型' then begin SCSHData(ADOQueryTemp, Panel3, 2); end else if FPSType = '防水' then begin SCSHData(ADOQueryTemp, Panel4, 2); end else if FPSType = '发泡' then begin SCSHData(ADOQueryTemp, Panel5, 2); end else if FPSType = '刮胶' then begin SCSHData(ADOQueryTemp, Panel6, 2); end else if FPSType = '轧毛' then begin SCSHData(ADOQueryTemp, Panel7, 2); end; end; if BtnInt = 2 then //复制 begin with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from Dye_Process where PSID=''' + Trim(FPSID) + ''''); Open; end; SCSHData(ADOQueryTemp, Panel1, 2); with ADOQueryTemp do begin Close; SQL.Clear; SQL.Add('select * from Bs_Cloth_GY_Main where PSID=''' + Trim(FPSID) + ''''); Open; end; if FPSType = '清洗' then begin SCSHData(ADOQueryTemp, Panel2, 2); end else if FPSType = '定型' then begin SCSHData(ADOQueryTemp, Panel3, 2); end else if FPSType = '防水' then begin SCSHData(ADOQueryTemp, Panel4, 2); with CDS_1 do begin First; while not Eof do begin Edit; CDS_1.fieldbyname('BCPID').AsString := ''; Post; Next; end; end; end else if FPSType = '发泡' then begin SCSHData(ADOQueryTemp, Panel5, 2); with CDS_2 do begin First; while not Eof do begin Edit; CDS_2.fieldbyname('BCPID').AsString := ''; Post; Next; end; end; end else if FPSType = '刮胶' then begin SCSHData(ADOQueryTemp, Panel6, 2); with CDS_3 do begin First; while not Eof do begin Edit; CDS_3.fieldbyname('BCPID').AsString := ''; Post; Next; end; end; end else if FPSType = '轧毛' then begin SCSHData(ADOQueryTemp, Panel7, 2); end; end; if BtnInt = 3 then //查看 begin TbSave.Visible := False; TbUpFile.Visible := False; end; end; procedure TfrmDyeProcessDefin.fs_meterPropertiesChange(Sender: TObject); var mfs_meter, mfs_useOneMeter, mfs_useGlub: Double; begin if fs_meter.Text <> '' then begin mfs_meter := StrToFloat(fs_meter.Text); end else begin fs_meter.Text := '0'; mfs_meter := 0; end; if fs_useOneMeter.Text <> '' then begin mfs_useOneMeter := StrToFloat(fs_useOneMeter.Text); end else begin fs_useOneMeter.Text := '0'; mfs_useOneMeter := 0; end; ///计算部分 mfs_useGlub := mfs_meter * mfs_useOneMeter / 1000; fs_useGlub.Text := FloatToStr(mfs_useGlub); end; procedure TfrmDyeProcessDefin.TBCloseClick(Sender: TObject); begin Close; end; function TfrmDyeProcessDefin.CheckData(): Boolean; begin if Trim(PSName.Text) = '' then begin Application.MessageBox('工序名称不能为空!', '提示信息', MB_OK); Result := False; Exit; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Dye_Process where PSName=''' + trim(PSName.Text) + ''''); Open; end; if ADOQueryCmd.RecordCount > 1 then begin application.MessageBox(PChar('工序名称' + trim(PSName.text) + '已存在'), '提示'); Result := false; Exit; end; Result := True; end; function TfrmDyeProcessDefin.SaveData(): Boolean; var MaxProcessID, MaxBCPID, MaxPSID: string; maxid1, maxid2, maxid3, maxgx, maxId: string; begin try ADOQueryCmd.Connection.BeginTrans; ///////////////////////////保存主表Dye_process//////////////////////////// with ADOQueryCmd do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from Dye_Process where PSID=''' + Trim(FPSID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(fieldbyname('PSID').AsString) = '' then begin if GetLSNo(ADOQueryCmd, maxId, 'JP', 'Dye_Process', 4, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; end else begin maxId := Trim(FPSID); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Dye_Process where PSID=''' + Trim(maxId) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FPSID) = '' then begin Append; FieldByName('Filler').Value := Trim(DName); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp); end; RTSetsavedata(ADOQueryCmd, 'Dye_Process', panel1, 2); FieldByName('PSID').Value := Trim(maxId); FieldByName('PSType').Value := Trim(FPSType); Post; end; end; ///////////////////保存主表Dye_process//////////////////////////// //////////////// 保存主表 ////////////////////// with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Main where PSID=''' + Trim(maxId) + ''''); Open; end; with ADOQueryCmd do begin if Trim(FPSID) = '' then begin Append; end else begin Edit; end; FieldByName('PSID').Value := Trim(maxId); RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel2, 2); RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel3, 2); RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel4, 2); RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel5, 2); RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel6, 2); RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel7, 2); Post; end; //////////////// 保存主表 ////////////////////// /// /// ////////////////// 保存防水子表 ////////////////////// with CDS_1 do begin First; while not Eof do begin if Trim(CDS_1.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxid1, 'FS', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxid1 := Trim(CDS_1.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add(' BCPID=''' + Trim(maxid1) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_1.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '防水'; FieldByName('PSID').Value := Trim(maxId); FieldByName('BCPID').Value := Trim(maxid1); RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'Bs_Cloth_GY_Sub', 0); Post; end; CDS_1.Edit; CDS_1.FieldByName('PSID').Value := Trim(maxId); CDS_1.FieldByName('BCPID').Value := Trim(maxid1); Next; end; end; //////////////// 保存子表 ////////////////////// ////////////////// 保存发泡子表 ////////////////////// with CDS_2 do begin First; while not Eof do begin if Trim(CDS_2.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxid2, 'FP', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxid2 := Trim(CDS_2.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add(' BCPID=''' + Trim(maxid2) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_2.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '发泡'; FieldByName('PSID').Value := Trim(maxId); FieldByName('PSID').Value := Trim(maxid2); RTSetSaveDataCDS(ADOQueryCmd, Tv2, CDS_2, 'Bs_Cloth_GY_Sub', 0); Post; end; CDS_2.Edit; CDS_2.FieldByName('PSID').Value := Trim(maxId); CDS_2.FieldByName('PSID').Value := Trim(maxid2); Next; end; end; //////////////// 保存发泡子表 ////////////////////// /// /// ////////////////// 保存刮胶子表 ////////////////////// with CDS_3 do begin First; while not Eof do begin if Trim(CDS_3.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxid3, 'GJ', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxid3 := Trim(CDS_3.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add('BCPID=''' + Trim(maxid3) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_3.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '刮胶'; FieldByName('PSID').Value := Trim(maxId); FieldByName('PSID').Value := Trim(maxid3); RTSetSaveDataCDS(ADOQueryCmd, Tv3, CDS_3, 'Bs_Cloth_GY_Sub', 0); Post; end; CDS_3.Edit; CDS_3.FieldByName('PSID').Value := Trim(maxId); CDS_3.FieldByName('PSID').Value := Trim(maxid3); Next; end; end; //////////////// 保存刮胶子表 ////////////////////// /// /// ADOQueryCmd.Connection.CommitTrans; FPSID := maxId; Result := True; except Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmDyeProcessDefin.CYJGGYBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; end; procedure TfrmDyeProcessDefin.TbSaveClick(Sender: TObject); var MC_Code: string; begin if CheckData() and SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); ModalResult := 1; end; end; procedure TfrmDyeProcessDefin.TbDXReplaceClick(Sender: TObject); begin FillAllTextEditsWithValue(panel3, '定型烘箱温度', FindLastEditedTextEdit(panel3, '定型烘箱温度')); end; procedure TfrmDyeProcessDefin.TbFPReplaceClick(Sender: TObject); begin FillAllTextEditsWithValue(panel5, '发泡烘箱温度', FindLastEditedTextEdit(panel5, '发泡烘箱温度')); end; procedure TfrmDyeProcessDefin.TbGJReplaceClick(Sender: TObject); begin FillAllTextEditsWithValue(panel6, '刮胶烘箱温度', FindLastEditedTextEdit(panel6, '刮胶烘箱温度')); end; procedure TfrmDyeProcessDefin.TbAdd1Click(Sender: TObject); begin with CDS_1 do begin Append; CDS_1.FieldByName('serialno').Value := CDS_1.RecordCount + 1; CDS_1.FieldByName('fs_unit').Value := '%'; Post; end; end; procedure TfrmDyeProcessDefin.TbAdd2Click(Sender: TObject); begin with CDS_2 do begin Append; CDS_2.FieldByName('serialno').Value := CDS_2.RecordCount + 1; CDS_2.FieldByName('fp_unit').Value := '%'; Post; end; end; procedure TfrmDyeProcessDefin.TbAdd3Click(Sender: TObject); begin with CDS_3 do begin Append; CDS_3.FieldByName('serialno').Value := CDS_3.RecordCount + 1; CDS_3.FieldByName('gj_unit').Value := '%'; Post; end; end; procedure TfrmDyeProcessDefin.TbDel1Click(Sender: TObject); var i: Integer; begin if not CDS_1.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_1.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=''' + Trim(CDS_1.fieldbyname('BCPID').AsString)); ExecSQL; end; end; CDS_1.Delete; end else exit; i := 0; CDS_1.First; while not CDS_1.Eof do begin i := i + 1; CDS_1.Edit; CDS_1.fieldByName('serialno').value := i; CDS_1.Post; CDS_1.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeProcessDefin.TbDel2Click(Sender: TObject); var i: Integer; begin if not CDS_3.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_3.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=''' + Trim(CDS_3.fieldbyname('BCPID').AsString) + ''''); ExecSQL; end; end; CDS_3.Delete; end else exit; i := 0; CDS_3.First; while not CDS_3.Eof do begin i := i + 1; CDS_3.Edit; CDS_3.fieldByName('serialno').value := i; CDS_3.Post; CDS_3.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeProcessDefin.TbDel3Click(Sender: TObject); var i: Integer; begin if not CDS_3.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_3.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=''' + Trim(CDS_3.fieldbyname('BCPID').AsString) + ''''); ExecSQL; end; end; CDS_3.Delete; end else exit; i := 0; CDS_3.First; while not CDS_3.Eof do begin i := i + 1; CDS_3.Edit; CDS_3.fieldByName('serialno').value := i; CDS_3.Post; CDS_3.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeProcessDefin.TbCPReplaceClick(Sender: TObject); begin FillAllTextEditsWithValue(panel2, '清洗水温', FindLastEditedTextEdit(panel2, '清洗水温')); end; function TfrmDyeProcessDefin.FindLastEditedTextEdit(AParent: TWinControl; const AHint: string): string; var i, j: Integer; AControl: TControl; SortedControls: TList; TempControl: TControl; begin Result := ''; // 如果没有子控件,直接返回空 if AParent.ControlCount = 0 then Exit; // 使用 TList 存储控件(兼容旧版 Delphi) SortedControls := TList.Create; try // 将所有子控件添加到列表 for i := 0 to AParent.ControlCount - 1 do SortedControls.Add(AParent.Controls[i]); // 手动排序:按 Top(Y坐标)和 Left(X坐标)升序排列 for i := 0 to SortedControls.Count - 1 do begin for j := i + 1 to SortedControls.Count - 1 do begin // 比较两个控件的 Top 和 Left if (TControl(SortedControls[i]).Top > TControl(SortedControls[j]).Top) or ((TControl(SortedControls[i]).Top = TControl(SortedControls[j]).Top) and (TControl(SortedControls[i]).Left > TControl(SortedControls[j]).Left)) then begin // 交换位置 TempControl := TControl(SortedControls[i]); SortedControls[i] := SortedControls[j]; SortedControls[j] := TempControl; end; end; end; // 遍历排序后的控件 for i := 0 to SortedControls.Count - 1 do begin AControl := TControl(SortedControls[i]); if (AControl is TcxTextEdit) and (TcxTextEdit(AControl).Hint = AHint) and (TcxTextEdit(AControl).Text <> '') then begin Result := TcxTextEdit(AControl).Text; // 最后一个符合条件的会被保留 end; end; finally SortedControls.Free; end; end; procedure TfrmDyeProcessDefin.FillAllTextEditsWithValue(AParent: TWinControl; const AHint, AValue: string; AExclude: TcxTextEdit = nil); // 可选:排除特定控件 var i: Integer; AControl: TControl; ATextEdit: TcxTextEdit; begin for i := 0 to AParent.ControlCount - 1 do begin AControl := AParent.Controls[i]; if (AControl is TcxTextEdit) and ((AControl as TcxTextEdit).Text = '') then begin ATextEdit := AControl as TcxTextEdit; if (ATextEdit.Hint = AHint) and (ATextEdit <> AExclude) then ATextEdit.Text := AValue; end; end; end; procedure TfrmDyeProcessDefin.ClearAllTextEditsByHint(AParent: TWinControl; const AHint: string; AExclude: TcxTextEdit = nil); var i: Integer; AControl: TControl; begin for i := 0 to AParent.ControlCount - 1 do begin AControl := AParent.Controls[i]; // 检查是否是 TcxTextEdit,并且 Hint 匹配,且不是排除的控件 if (AControl is TcxTextEdit) and (TcxTextEdit(AControl).Hint = AHint) and (TcxTextEdit(AControl) <> AExclude) then begin TcxTextEdit(AControl).Text := ''; // 直接清空 end; end; end; procedure TfrmDyeProcessDefin.cxButton1Click(Sender: TObject); begin ClearAllTextEditsByHint(panel4, '防水烘箱温度'); end; procedure TfrmDyeProcessDefin.cxButton2Click(Sender: TObject); begin ClearAllTextEditsByHint(panel2, '清洗水温'); end; procedure TfrmDyeProcessDefin.TbDXClearClick(Sender: TObject); begin ClearAllTextEditsByHint(panel3, '定型烘箱温度'); end; procedure TfrmDyeProcessDefin.cxButton4Click(Sender: TObject); begin ClearAllTextEditsByHint(panel5, '发泡烘箱温度'); end; procedure TfrmDyeProcessDefin.TbGJClearClick(Sender: TObject); begin ClearAllTextEditsByHint(panel6, '刮胶烘箱温度'); end; procedure TfrmDyeProcessDefin.TbFSReplaceClick(Sender: TObject); begin FillAllTextEditsWithValue(panel4, '防水烘箱温度', FindLastEditedTextEdit(panel4, '防水烘箱温度')); end; procedure TfrmDyeProcessDefin.CYColorKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin Key := #0; SelectNext(ActiveControl as TWinControl, True, True); end; end; procedure TfrmDyeProcessDefin.C_WidthBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmDyeProcessDefin.C_WidthBtnUpClick(Sender: TObject); var fsj: string; FWZ: Integer; begin fsj := Trim(TEdit(Sender).Hint); FWZ := Pos('/', fsj); try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := Copy(fsj, 1, FWZ - 1); flagname := Copy(fsj, FWZ + 1, Length(fsj) - FWZ); if ShowModal = 1 then begin TEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmDyeProcessDefin.Tv11fs_NamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmProductInfoSel := TfrmProductInfoSel.Create(Application); with frmProductInfoSel do begin FSTKName := '助剂'; if ShowModal = 1 then begin with Self.CDS_1 do begin Edit; FieldByName('fs_Name').Value := frmProductInfoSel.CDS_1.fieldbyname('P_Name').value; FieldByName('fs_spel').Value := frmProductInfoSel.CDS_1.fieldbyname('P_Spec').value; end; end; end; finally frmProductInfoSel.Free; end; end; procedure TfrmDyeProcessDefin.Tv11fs_unitPropertiesEditValueChanged(Sender: TObject); var s: string; begin s := TcxTextEdit(Sender).EditingText; if (s <> '') and (s[Length(s)] <> '%') then begin Tv1.Controller.FocusedColumn.EditValue := s + '%'; end; end; procedure TfrmDyeProcessDefin.Tv2fp_NamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmProductInfoSel := TfrmProductInfoSel.Create(Application); with frmProductInfoSel do begin FSTKName := '助剂'; if ShowModal = 1 then begin with Self.CDS_2 do begin Edit; FieldByName('fp_Name').Value := frmProductInfoSel.CDS_1.fieldbyname('P_Name').value; FieldByName('fp_spel').Value := frmProductInfoSel.CDS_1.fieldbyname('P_Spec').value; end; end; end; finally frmProductInfoSel.Free; end; end; procedure TfrmDyeProcessDefin.Tv2fp_unitPropertiesEditValueChanged(Sender: TObject); var s: string; begin s := TcxTextEdit(Sender).EditingText; if (s <> '') and (s[Length(s)] <> '%') then begin Tv2.Controller.FocusedColumn.EditValue := s + '%'; end; end; procedure TfrmDyeProcessDefin.Tv3gj_NamePropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmProductInfoSel := TfrmProductInfoSel.Create(Application); with frmProductInfoSel do begin FSTKName := '助剂'; if ShowModal = 1 then begin with Self.CDS_3 do begin Edit; FieldByName('gj_Name').Value := frmProductInfoSel.CDS_1.fieldbyname('P_Name').value; FieldByName('gj_spel').Value := frmProductInfoSel.CDS_1.fieldbyname('P_Spec').value; end; end; end; finally frmProductInfoSel.Free; end; end; procedure TfrmDyeProcessDefin.Tv3gj_unitPropertiesEditValueChanged(Sender: TObject); var s: string; begin s := TcxTextEdit(Sender).EditingText; if (s <> '') and (s[Length(s)] <> '%') then begin Tv3.Controller.FocusedColumn.EditValue := s + '%'; end; end; end.