unit U_DyeSimpleTechnicsList; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB, cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData, DBClient, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, ExtCtrls, cxSplitter, cxGridLevel, cxClasses, cxGridCustomView, cxGrid, cxGridCustomPopupMenu, cxGridPopupMenu, RM_Dataset, RM_System, RM_Common, RM_Class, RM_GridReport, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdFTP, ShellAPI, IniFiles, cxCheckBox, cxCalendar, cxButtonEdit, cxTextEdit, cxPC, cxLookAndFeels, cxLookAndFeelPainters, cxNavigator, dxBarBuiltInMenu, Menus, U_BaseList, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, dxScrollbarAnnotations, cxContainer, cxDropDownEdit, cxLabel, cxButtons, cxMemo; type TfrmDyeSimpleTechnicsList = class(TfrmBaseList) ToolBar1: TToolBar; TBRafresh: TToolButton; TBDel: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; Panel1: TPanel; ToolButton2: TToolButton; Label1: TLabel; DTMName: TEdit; ADOQueryMain: TADOQuery; Label3: TLabel; DTMNo: TEdit; GPM_2: TcxGridPopupMenu; DS_2: TDataSource; CDS_2: TClientDataSet; cxTabControl1: TcxTabControl; Tchk: TToolButton; TNochk: TToolButton; DS_PsType: TDataSource; CDS_PSType: TClientDataSet; ADOQuery1: TADOQuery; GPM_1: TcxGridPopupMenu; ToolButton3: TToolButton; ToolButton1: TToolButton; ToolButton4: TToolButton; TbSave: TToolButton; Panel2: TPanel; cxGrid2: TcxGrid; Tv2: TcxGridDBTableView; v2Ssel: TcxGridDBColumn; v2GYNO: TcxGridDBColumn; v2GYName: TcxGridDBColumn; v2GYGX: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; Splitter1: TSplitter; ScrollBox1: TScrollBox; Panel_GJ: TPanel; Label9: TLabel; cxLabel240: TcxLabel; gj_speed: TcxTextEdit; cxLabel278: TcxLabel; gj_number: TcxTextEdit; TbGJReplace2: TcxButton; TbGJClear2: TcxButton; cxLabel234: TcxLabel; cxLabel236: TcxLabel; cxLabel237: TcxLabel; cxLabel238: TcxLabel; cxLabel247: TcxLabel; cxLabel249: TcxLabel; cxLabel250: TcxLabel; cxLabel251: TcxLabel; cxLabel252: TcxLabel; cxLabel253: TcxLabel; cxLabel273: TcxLabel; gj_temperature1: TcxTextEdit; gj_temperature10: TcxTextEdit; gj_temperature11: TcxTextEdit; gj_temperature2: TcxTextEdit; gj_temperature3: TcxTextEdit; gj_temperature4: TcxTextEdit; gj_temperature5: TcxTextEdit; gj_temperature6: TcxTextEdit; gj_temperature7: TcxTextEdit; gj_temperature8: TcxTextEdit; gj_temperature9: TcxTextEdit; cxGrid8: TcxGrid; TvGJ: TcxGridDBTableView; cxGridDBColumn24: TcxGridDBColumn; cxGridDBColumn27: TcxGridDBColumn; cxGridLevel7: TcxGridLevel; cxLabel9: TcxLabel; Panel_FP: TPanel; Label10: TLabel; cxLabel290: TcxLabel; fp_speed: TcxTextEdit; fp_gjNumber: TcxTextEdit; cxLabel279: TcxLabel; TbFPReplace2: TcxButton; TbFPClear2: TcxButton; cxLabel284: TcxLabel; cxLabel286: TcxLabel; cxLabel287: TcxLabel; cxLabel288: TcxLabel; cxLabel297: TcxLabel; cxLabel299: TcxLabel; cxLabel300: TcxLabel; cxLabel301: TcxLabel; cxLabel302: TcxLabel; cxLabel303: TcxLabel; cxLabel323: TcxLabel; fp_temperature1: TcxTextEdit; fp_temperature10: TcxTextEdit; fp_temperature11: TcxTextEdit; fp_temperature2: TcxTextEdit; fp_temperature3: TcxTextEdit; fp_temperature4: TcxTextEdit; fp_temperature5: TcxTextEdit; fp_temperature6: TcxTextEdit; fp_temperature7: TcxTextEdit; fp_temperature8: TcxTextEdit; fp_temperature9: TcxTextEdit; cxGrid6: TcxGrid; TvFP: TcxGridDBTableView; cxGridDBColumn14: TcxGridDBColumn; cxGridDBColumn17: TcxGridDBColumn; cxGridLevel5: TcxGridLevel; cxLabel8: TcxLabel; Panel_zm: TPanel; Label2: TLabel; Label11: TLabel; zm_inout: TcxTextEdit; zm_style: TcxComboBox; cxLabel336: TcxLabel; zm_mainElec: TcxTextEdit; cxLabel344: TcxLabel; zm_needleHigh: TcxTextEdit; cxLabel342: TcxLabel; Panel_ccqx: TPanel; Label4: TLabel; cxLabel113: TcxLabel; ccqx_speed: TcxTextEdit; ccqx_temperature1: TcxTextEdit; ccqx_temperature2: TcxTextEdit; ccqx_temperature3: TcxTextEdit; ccqx_temperature4: TcxTextEdit; ccqx_temperature5: TcxTextEdit; ccqx_temperature6: TcxTextEdit; TbCCQXReplace: TcxButton; TbccqxClear: TcxButton; cxLabel41: TcxLabel; cxLabel42: TcxLabel; cxLabel45: TcxLabel; cxLabel46: TcxLabel; cxLabel47: TcxLabel; cxLabel48: TcxLabel; cxGrid4: TcxGrid; TvCCQX: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; Tv1ccqx_rate: TcxGridDBColumn; cxGridLevel4: TcxGridLevel; cxLabel1: TcxLabel; Panel_rgqx: TPanel; Label5: TLabel; cxLabel114: TcxLabel; cxLabel150: TcxLabel; cxLabel165: TcxLabel; rgqx_daoSet: TcxTextEdit; rgqx_speed: TcxTextEdit; rgqx_waterTemper: TcxTextEdit; cxGrid3: TcxGrid; TvRGQX: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridDBColumn7: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; cxLabel2: TcxLabel; Panel_jgqx: TPanel; Label6: TLabel; cxLabel340: TcxLabel; jgqx_keepTemper: TcxTextEdit; jgqx_keepTime: TcxTextEdit; cxLabel347: TcxLabel; cxLabel173: TcxLabel; cxLabel334: TcxLabel; jgqx_upperSpeed: TcxTextEdit; jgqx_downSpeed: TcxTextEdit; cxGrid5: TcxGrid; TvJGQX: TcxGridDBTableView; cxGridDBColumn9: TcxGridDBColumn; cxGridDBColumn10: TcxGridDBColumn; cxGridDBColumn11: TcxGridDBColumn; cxGridDBColumn12: TcxGridDBColumn; cxGridDBColumn13: TcxGridDBColumn; cxGridLevel3: TcxGridLevel; cxLabel3: TcxLabel; Panel_dx: TPanel; Label7: TLabel; cxLabel4: TcxLabel; dx_speed: TcxTextEdit; cxLabel21: TcxLabel; cxLabel23: TcxLabel; cxLabel24: TcxLabel; cxLabel25: TcxLabel; cxLabel6: TcxLabel; cxLabel61: TcxLabel; cxLabel62: TcxLabel; cxLabel63: TcxLabel; cxLabel64: TcxLabel; cxLabel65: TcxLabel; dx_temperature1: TcxTextEdit; dx_temperature5: TcxTextEdit; dx_temperature9: TcxTextEdit; dx_temperature6: TcxTextEdit; dx_temperature3: TcxTextEdit; dx_temperature4: TcxTextEdit; dx_temperature7: TcxTextEdit; dx_temperature8: TcxTextEdit; dx_temperature10: TcxTextEdit; dx_temperature2: TcxTextEdit; TbDXReplace2: TcxButton; TbDXClear2: TcxButton; cxLabel189: TcxLabel; dx_temperature11: TcxTextEdit; cxLabel5: TcxLabel; Panel_FS: TPanel; Label8: TLabel; cxLabel198: TcxLabel; fs_speed: TcxTextEdit; FS_Style: TcxComboBox; fs_isVacuun: TcxComboBox; TbFSReplace2: TcxButton; TBFScLEAR2: TcxButton; cxLabel192: TcxLabel; cxLabel194: TcxLabel; cxLabel195: TcxLabel; cxLabel196: TcxLabel; cxLabel205: TcxLabel; cxLabel207: TcxLabel; cxLabel208: TcxLabel; cxLabel209: TcxLabel; cxLabel210: TcxLabel; cxLabel211: TcxLabel; cxLabel231: TcxLabel; fs_temperature1: TcxTextEdit; fs_temperature10: TcxTextEdit; fs_temperature11: TcxTextEdit; fs_temperature2: TcxTextEdit; fs_temperature3: TcxTextEdit; fs_temperature4: TcxTextEdit; fs_temperature5: TcxTextEdit; fs_temperature6: TcxTextEdit; fs_temperature7: TcxTextEdit; fs_temperature8: TcxTextEdit; fs_temperature9: TcxTextEdit; cxGrid7: TcxGrid; TvFS: TcxGridDBTableView; cxGridDBColumn19: TcxGridDBColumn; cxGridDBColumn22: TcxGridDBColumn; cxGridLevel6: TcxGridLevel; cxLabel7: TcxLabel; Splitter2: TSplitter; Panel3: TPanel; cxGrid1: TcxGrid; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid9: TcxGrid; Tv3: TcxGridDBTableView; cxGridLevel8: TcxGridLevel; TbJGQXAdd: TcxButton; TbJGQXDel: TcxButton; TbRGQXAdd: TcxButton; TbRGQXDel: TcxButton; TbCCQXAdd: TcxButton; TbCCQXDel: TcxButton; TbGJAdd: TcxButton; TbGJDel: TcxButton; TbFPAdd: TcxButton; TbFPDel: TcxButton; TbFSAdd: TcxButton; TbFSDel: TcxButton; Tv1PSType: TcxGridDBColumn; CDS_GX: TClientDataSet; DS_GX: TDataSource; Tv3PSNO: TcxGridDBColumn; Tv3PSType: TcxGridDBColumn; Tv3PSName: TcxGridDBColumn; Tv3PSID: TcxGridDBColumn; CDS_CCQX: TClientDataSet; DS_CCQX: TDataSource; CDS_RGQX: TClientDataSet; DS_rgqx: TDataSource; CDS_JGQX: TClientDataSet; CDS_fS: TClientDataSet; CDS_gj: TClientDataSet; CDS_FP: TClientDataSet; DS_jgqx: TDataSource; DS_FS: TDataSource; DS_gj: TDataSource; DS_FP: TDataSource; zm_Precautions: TcxMemo; ccqx_note: TcxMemo; rgqx_note: TcxMemo; jgqx_note: TcxMemo; dx_Precautions: TcxMemo; fs_Precautions: TcxMemo; gj_Precautions: TcxMemo; fp_Precautions: TcxMemo; Tv2DTMID: TcxGridDBColumn; cxLabel10: TcxLabel; gj_leftGap: TcxTextEdit; cxLabel11: TcxLabel; gj_rightGap: TcxTextEdit; cxLabel12: TcxLabel; fp_leftGap: TcxTextEdit; cxLabel13: TcxLabel; fp_rightGap: TcxTextEdit; TvCCQXserialno: TcxGridDBColumn; TvRGQXserialno: TcxGridDBColumn; TvJGQXserialno: TcxGridDBColumn; TvFSColumn1: TcxGridDBColumn; TvGJserialno: TcxGridDBColumn; TvFPserialno: TcxGridDBColumn; ToolBar2: TToolBar; ToolButton5: TToolButton; Tv2Editer: TcxGridDBColumn; Tv2Edittime: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure TBDelClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure DTMNoChange(Sender: TObject); procedure TchkClick(Sender: TObject); procedure TNochkClick(Sender: TObject); procedure cxTabControl1Change(Sender: TObject); procedure FormCreate(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton4Click(Sender: TObject); procedure cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); procedure Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure ButtonEdit(Sender: TObject; AButtonIndex: Integer); procedure Tv1DblClick(Sender: TObject); procedure TbSaveClick(Sender: TObject); procedure TbCCQXAddClick(Sender: TObject); procedure TbRGQXAddClick(Sender: TObject); procedure TbJGQXAddClick(Sender: TObject); procedure TbFSAddClick(Sender: TObject); procedure TbGJAddClick(Sender: TObject); procedure TbFPAddClick(Sender: TObject); procedure TbCCQXDelClick(Sender: TObject); procedure TbFPDelClick(Sender: TObject); procedure TbGJDelClick(Sender: TObject); procedure TbFSDelClick(Sender: TObject); procedure TbJGQXDelClick(Sender: TObject); procedure TbRGQXDelClick(Sender: TObject); procedure TbCCQXReplaceClick(Sender: TObject); procedure TbDXReplace2Click(Sender: TObject); procedure TbFSReplace2Click(Sender: TObject); procedure TbGJReplace2Click(Sender: TObject); procedure TbFPReplace2Click(Sender: TObject); procedure TbccqxClearClick(Sender: TObject); procedure TbDXClear2Click(Sender: TObject); procedure TBFScLEAR2Click(Sender: TObject); procedure TbGJClear2Click(Sender: TObject); procedure TbFPClear2Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); private { Private declarations } procedure InitGrid(); procedure SetStatus(); procedure InitPSTypeGrid(); procedure InitGlide(); procedure InitGXDetails(); function SaveData(): Boolean; procedure FillAllTextEditsWithValue(AParent: TWinControl; const AHint, AValue: string; AExclude: TcxTextEdit = nil); procedure ClearAllTextEditsByHint(AParent: TWinControl; const AHint: string; AExclude: TcxTextEdit = nil); function FindLastEditedTextEdit(AParent: TWinControl; const AHint: string): string; public fPSIDList: string; fmanage: string; end; var frmDyeSimpleTechnicsList: TfrmDyeSimpleTechnicsList; implementation uses U_DataLink, U_RTFun, U_ZDYHelp, U_DyeTechnicsinput, U_DyeProcessDefin; {$R *.dfm} procedure TfrmDyeSimpleTechnicsList.SetStatus(); var i: integer; begin Tchk.Visible := false; TNochk.Visible := false; TBDel.Visible := false; Panel_zm.Visible := False; Panel_ccqx.Visible := False; Panel_rgqx.Visible := False; Panel_jgqx.Visible := False; Panel_dx.Visible := False; Panel_FS.Visible := False; Panel_GJ.Visible := False; Panel_FP.Visible := False; // for i := 0 to tv2.ColumnCount - 1 do // begin // if uppercase(tv2.Columns[i].DataBinding.FieldName) <> 'SSEL' then // tv2.Columns[i].Options.Editing := false; // end; if cxTabControl1.TabIndex = 0 then begin Tchk.Visible := true; TBDel.Visible := true; end; if cxTabControl1.TabIndex = 1 then begin TNochk.Visible := true; end; if cxTabControl1.TabIndex = 2 then begin end; end; procedure TfrmDyeSimpleTechnicsList.InitGrid(); begin try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; SQL.Clear; sql.Add(' select * FROM Dye_Technics_Main'); if cxTabControl1.TabIndex < 2 then sql.Add(' where isnull(status,''0'')=''' + inttostr(cxTabControl1.TabIndex) + ''' '); // ShowMessage(SQL.Text); Open; end; SCreateCDS(ADOQueryMain, CDS_2); SInitCDSData(ADOQueryMain, CDS_2); // ShowMessage(ADOQueryMain.FieldByName('DTMID').AsString); // ShowMessage(CDS_2.FieldByName('DTMID').AsString); finally ADOQueryMain.EnableControls; //CDS_1.EmptyDataSet; end; end; procedure TfrmDyeSimpleTechnicsList.InitPSTypeGrid(); begin try ADOQueryCMD.DisableControls; with ADOQueryCMD do begin // Filtered := False; Close; SQL.Clear; sql.Add(' select *,PSXH=0 from Dye_Technics '); Open; end; // SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryCMD, CDS_PSType); SInitCDSData(ADOQueryCMD, CDS_PSType); finally ADOQueryCMD.EnableControls; end; end; procedure TfrmDyeSimpleTechnicsList.InitGlide(); begin try ADOQueryTemp.DisableControls; with ADOQueryTemp do begin Close; SQL.Clear; sql.Add(' select A.* FROM V_Dye_Technics_Details A'); sql.Add(' Where A.DTMID=''' + trim(CDS_2.fieldbyname('DTMID').AsString) + ''''); SQL.Add(' ORDER BY A.PSNO'); Open; end; SCreateCDS(ADOQueryTemp, CDS_GX); SInitCDSData(ADOQueryTemp, CDS_GX); finally ADOQueryTemp.EnableControls; end; end; procedure TfrmDyeSimpleTechnicsList.InitGXDetails(); begin try ADOQueryTemp.DisableControls; CDS_GX.First; while not CDS_GX.eof do begin with ADOQueryTemp do begin Close; SQL.Clear; sql.Add(' select A.* FROM V_Dye_Technics_Details A'); sql.Add(' Where A.PSID=''' + trim(CDS_GX.fieldbyname('PSID').AsString) + ''''); // SQL.Add(' and A.PSID = ''' + trim(CDS_2.fieldbyname('PSID').AsString) + ''''); Open; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add(' select A.* FROM BS_Cloth_GY_Sub A'); sql.Add(' Where A.PSID=''' + trim(CDS_GX.fieldbyname('PSID').AsString) + ''''); // SQL.Add(' and A.PSID = ''' + trim(CDS_2.fieldbyname('PSID').AsString) + ''''); Open; end; // ShowMessage(IntToStr(ADOQueryCmd.RecordCount)); if CDS_GX.FieldByName('PSType').AsString = '长车清洗' then begin Panel_ccqx.Visible := True; SCSHData(ADOQueryTemp, Panel_ccqx, 2); ccqx_note.Lines.Text := ADOQueryTemp.FieldByName('ccqx_note').AsString; SCreateCDS(ADOQueryCmd, CDS_CCQX); SInitCDSData(ADOQueryCmd, CDS_CCQX); end else if CDS_GX.FieldByName('PSType').AsString = '卷染缸清洗' then begin Panel_rgqx.Visible := True; SCSHData(ADOQueryTemp, Panel_rgqx, 2); rgqx_note.Lines.Text := ADOQueryTemp.FieldByName('rgqx_note').AsString; SCreateCDS(ADOQueryCmd, CDS_rgQX); SInitCDSData(ADOQueryCmd, CDS_RGQX); end else if CDS_GX.FieldByName('PSType').AsString = '机缸清洗' then begin Panel_jgqx.Visible := True; SCSHData(ADOQueryTemp, Panel_jgqx, 2); jgqx_note.Lines.Text := ADOQueryTemp.FieldByName('jgqx_note').AsString; SCreateCDS(ADOQueryCmd, CDS_JGQX); SInitCDSData(ADOQueryCmd, CDS_JGQX); end else if CDS_GX.FieldByName('PSType').AsString = '干定型' then begin Panel_dx.Visible := True; SCSHData(ADOQueryTemp, Panel_dx, 2); dx_Precautions.Lines.Text := ADOQueryTemp.FieldByName('dx_Precautions').AsString; end else if CDS_GX.FieldByName('PSType').AsString = '下水定型' then begin Panel_fs.Visible := True; SCSHData(ADOQueryTemp, Panel_fs, 2); fs_Precautions.Lines.Text := ADOQueryTemp.FieldByName('fs_Precautions').AsString; SCreateCDS(ADOQueryCmd, CDS_fS); SInitCDSData(ADOQueryCmd, CDS_fS); end else if CDS_GX.FieldByName('PSType').AsString = '发泡' then begin Panel_fp.Visible := True; SCSHData(ADOQueryTemp, Panel_fp, 2); fp_Precautions.Lines.Text := ADOQueryTemp.FieldByName('fp_Precautions').AsString; SCreateCDS(ADOQueryCmd, CDS_FP); SInitCDSData(ADOQueryCmd, CDS_FP); end else if CDS_GX.FieldByName('PSType').AsString = '刮胶' then begin Panel_gj.Visible := True; SCSHData(ADOQueryTemp, Panel_gj, 2); gj_Precautions.Lines.Text := ADOQueryTemp.FieldByName('gj_Precautions').AsString; SCreateCDS(ADOQueryCmd, CDS_GJ); SInitCDSData(ADOQueryCmd, CDS_GJ); end else if CDS_GX.FieldByName('PSType').AsString = '轧毛' then begin Panel_zm.Visible := True; SCSHData(ADOQueryTemp, Panel_zm, 2); zm_Precautions.Lines.Text := ADOQueryTemp.FieldByName('zm_Precautions').AsString; end; CDS_GX.Next; end; finally ADOQueryTemp.EnableControls; end; end; procedure TfrmDyeSimpleTechnicsList.FormDestroy(Sender: TObject); begin inherited; frmDyeSimpleTechnicsList := nil; end; procedure TfrmDyeSimpleTechnicsList.FormClose(Sender: TObject; var Action: TCloseAction); begin inherited; Action := caFree; end; procedure TfrmDyeSimpleTechnicsList.TBCloseClick(Sender: TObject); begin Close; end; procedure TfrmDyeSimpleTechnicsList.TBDelClick(Sender: TObject); begin if CDS_2.IsEmpty then Exit; if CDS_2.Locate('ssel', true, []) = false then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) <> IDYES then Exit; try ADOQueryCmd.Connection.BeginTrans; with CDS_2 do begin DisableControls; First; while not eof do begin if Fieldbyname('ssel').AsBoolean then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('delete Dye_Technics_Main where DTMID=''' + Trim(CDS_2.fieldbyname('DTMID').AsString) + ''''); sql.Add('delete Dye_Technics_Sub where DTMID=''' + Trim(CDS_2.fieldbyname('DTMID').AsString) + ''''); execsql; end; // CDS_1.First; // while not CDS_1.Eof do // begin // with ADOQueryCmd do // begin // close; // sql.Clear; // sql.Add('delete Dye_Process where PSID=''' + Trim(CDS_1.fieldbyname('PSID').AsString) + ''''); // sql.Add('delete BS_Cloth_GY_Sub where PSID=''' + Trim(CDS_1.fieldbyname('PSID').AsString) + ''''); // sql.Add('delete BS_Cloth_GY_Main where PSID=''' + Trim(CDS_1.fieldbyname('PSID').AsString) + ''''); // // execsql; // end; // CDS_1.Next; // end; end; next; end; First; EnableControls; end; InitGrid(); ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('操作失败!', '提示信息', 0); end; end; procedure TfrmDyeSimpleTechnicsList.TbDXClear2Click(Sender: TObject); begin ClearAllTextEditsByHint(panel_DX, '干定型温控'); end; procedure TfrmDyeSimpleTechnicsList.TbDXReplace2Click(Sender: TObject); begin FillAllTextEditsWithValue(panel_dx, '干定型温控', FindLastEditedTextEdit(panel_dx, '干定型温控')); end; procedure TfrmDyeSimpleTechnicsList.TbFPAddClick(Sender: TObject); begin with CDS_FP do begin Append; CDS_FP.FieldByName('serialno').Value := CDS_FP.RecordCount + 1; Post; end; end; procedure TfrmDyeSimpleTechnicsList.TbFPClear2Click(Sender: TObject); begin ClearAllTextEditsByHint(panel_Fp, '发泡温控'); end; procedure TfrmDyeSimpleTechnicsList.TbFPDelClick(Sender: TObject); var i: Integer; begin if not CDS_FP.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_FP.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=' + quotedStr(Trim(CDS_FP.fieldbyname('BCPID').AsString))); ExecSQL; end; end; CDS_FP.Delete; end else exit; i := 0; CDS_FP.First; while not CDS_FP.Eof do begin i := i + 1; CDS_FP.Edit; CDS_FP.fieldByName('serialno').value := i; CDS_FP.Post; CDS_FP.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeSimpleTechnicsList.TbFPReplace2Click(Sender: TObject); begin FillAllTextEditsWithValue(panel_fp, '发泡温控', FindLastEditedTextEdit(panel_fp, '发泡温控')); end; procedure TfrmDyeSimpleTechnicsList.TbFSAddClick(Sender: TObject); begin with CDS_FS do begin Append; CDS_FS.FieldByName('serialno').Value := CDS_FS.RecordCount + 1; Post; end; end; procedure TfrmDyeSimpleTechnicsList.TBFScLEAR2Click(Sender: TObject); begin ClearAllTextEditsByHint(panel_FS, '防水温控'); end; procedure TfrmDyeSimpleTechnicsList.TbFSDelClick(Sender: TObject); var i: Integer; begin if not CDS_FS.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_FS.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=' + quotedStr(Trim(CDS_FS.fieldbyname('BCPID').AsString))); ExecSQL; end; end; CDS_FS.Delete; end else exit; i := 0; CDS_FS.First; while not CDS_FS.Eof do begin i := i + 1; CDS_FS.Edit; CDS_FS.fieldByName('serialno').value := i; CDS_FS.Post; CDS_FS.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeSimpleTechnicsList.TbFSReplace2Click(Sender: TObject); begin FillAllTextEditsWithValue(panel_fs, '防水温控', FindLastEditedTextEdit(panel_fs, '防水温控')); end; procedure TfrmDyeSimpleTechnicsList.TbGJAddClick(Sender: TObject); begin with CDS_GJ do begin Append; CDS_GJ.FieldByName('serialno').Value := CDS_GJ.RecordCount + 1; Post; end; end; procedure TfrmDyeSimpleTechnicsList.TbGJClear2Click(Sender: TObject); begin ClearAllTextEditsByHint(panel_gj, '刮胶温控'); end; procedure TfrmDyeSimpleTechnicsList.TbGJDelClick(Sender: TObject); var i: Integer; begin if not CDS_GJ.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_GJ.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=' + quotedStr(Trim(CDS_GJ.fieldbyname('BCPID').AsString))); ExecSQL; end; end; CDS_GJ.Delete; end else exit; i := 0; CDS_GJ.First; while not CDS_GJ.Eof do begin i := i + 1; CDS_GJ.Edit; CDS_GJ.fieldByName('serialno').value := i; CDS_GJ.Post; CDS_GJ.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeSimpleTechnicsList.TbGJReplace2Click(Sender: TObject); begin FillAllTextEditsWithValue(panel_gj, '刮胶温控', FindLastEditedTextEdit(panel_gj, '刮胶温控')); end; procedure TfrmDyeSimpleTechnicsList.TbJGQXAddClick(Sender: TObject); begin with CDS_JGQX do begin Append; CDS_JGQX.FieldByName('serialno').Value := CDS_JGQX.RecordCount + 1; Post; end; end; procedure TfrmDyeSimpleTechnicsList.TbJGQXDelClick(Sender: TObject); var i: Integer; begin if not CDS_JGQX.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_JGQX.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=' + quotedStr(Trim(CDS_JGQX.fieldbyname('BCPID').AsString))); ExecSQL; end; end; CDS_JGQX.Delete; end else exit; i := 0; CDS_JGQX.First; while not CDS_JGQX.Eof do begin i := i + 1; CDS_JGQX.Edit; CDS_JGQX.fieldByName('serialno').value := i; CDS_JGQX.Post; CDS_JGQX.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeSimpleTechnicsList.FormShow(Sender: TObject); begin inherited; ReadCxGrid(trim(self.Caption) + 'Tv1', Tv1, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'Tv2', Tv2, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'Tv3', Tv3, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'TvCCQX', TvCCQX, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'TvRGQX', TvRGQX, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'TvJGQX', TvJGQX, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'TvFS', TvFS, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'TvGJ', TvGJ, '简易工艺管理'); ReadCxGrid(trim(self.Caption) + 'TvFP', TvFP, '简易工艺管理'); SetStatus(); InitGrid(); end; procedure TfrmDyeSimpleTechnicsList.TBRafreshClick(Sender: TObject); begin InitGrid(); end; procedure TfrmDyeSimpleTechnicsList.TbSaveClick(Sender: TObject); begin if SaveData() then begin Application.MessageBox('保存成功!', '提示', 0); end; end; procedure TfrmDyeSimpleTechnicsList.ToolButton1Click(Sender: TObject); begin CDS_2.Append; tv2.Columns[1].Options.Editing := true; tv2.Columns[2].Options.Editing := true; end; procedure TfrmDyeSimpleTechnicsList.ToolButton2Click(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_2); SInitCDSData(ADOQueryMain, CDS_2); end; end; procedure TfrmDyeSimpleTechnicsList.ToolButton3Click(Sender: TObject); begin WriteCxGrid(trim(self.Caption) + 'Tv1', Tv1, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'Tv2', Tv2, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'Tv3', Tv3, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'TvCCQX', TvCCQX, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'TvRGQX', TvRGQX, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'TvJGQX', TvJGQX, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'TvFS', TvFS, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'TvGJ', TvGJ, '简易工艺管理'); WriteCxGrid(trim(self.Caption) + 'TvFP', TvFP, '简易工艺管理'); end; procedure TfrmDyeSimpleTechnicsList.ToolButton4Click(Sender: TObject); begin InitPSTypeGrid(); tv2.Columns[1].Options.Editing := true; tv2.Columns[2].Options.Editing := true; end; procedure TfrmDyeSimpleTechnicsList.ToolButton5Click(Sender: TObject); begin if CDS_GX.IsEmpty then begin Exit; end; if (CDS_GX.FieldByName('PSID').asString = '') or (CDS_GX.FieldByName('PSID').asString = null) then begin CDS_GX.Delete; InitGXDetails(); end else begin Application.MessageBox('已保存工序不能删除!','提示信息',MB_OK); end; end; function TfrmDyeSimpleTechnicsList.SaveData(): Boolean; var MaxProcessID, MaxBCPID, MaxPSID, MaxDTMID, mDTMID, DTMPSlist: string; maxsubid1, maxsubid2, maxsubid3, maxsubid4, maxsubid5, maxsubid6, mmaxgx, maxId, mPSID, mPSType: string; begin try ADOQueryCmd.Connection.BeginTrans; CDS_GX.First; while not CDS_GX.Eof do begin mPSID := CDS_GX.FieldByName('PSID').AsString; mPSType := CDS_GX.FieldByName('PSType').AsString; mDTMID := CDS_2.FieldByName('DTMID').AsString; ///////////////////////////保存主表Dye_process//////////////////////////// with ADOQueryCmd do begin Filtered := False; Close; SQL.Clear; sql.Add(' select * from Dye_Process where PSID=''' + Trim(mPSID) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_GX.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(mPSID); end; with CDS_GX do begin Edit; FieldByName('PSID').Value := maxId; Post; 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(mPSID) = '' then begin Append; FieldByName('Filler').Value := Trim(DName); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp); end; FieldByName('PSID').Value := Trim(maxId); FieldByName('DTMID').Value := Trim(CDS_2.FieldByName('DTMID').AsString); FieldByName('PSType').Value := Trim(mPSType); FieldByName('PSName').Value := Trim(CDS_GX.FieldByName('PSName').AsString); FieldByName('DTMName').Value := Trim(CDS_2.FieldByName('DTMName').AsString); 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(mPSID) = '' then begin Append; end else begin Edit; end; FieldByName('PSID').Value := Trim(maxId); if mPSType = '轧毛' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel_zm, 2); ADOQueryCmd.Post; end else if mPSType = '长车清洗' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', Panel_ccqx, 2); ADOQueryCmd.Post; ////////////////// 保存长车清洗子表 ////////////////////// with CDS_CCQX do begin First; while not Eof do begin if Trim(CDS_CCQX.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxsubid1, 'CCQX', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxsubid1 := Trim(CDS_CCQX.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add(' BCPID=''' + Trim(maxsubid1) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_CCQX.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '长车清洗'; FieldByName('PSID').Value := Trim(maxId); FieldByName('BCPID').Value := Trim(maxsubid1); RTSetSaveDataCDS(ADOQueryCmd, TvCCQX, CDS_CCQX, 'Bs_Cloth_GY_Sub', 0); Post; end; Next; end; end; //////////////// 保存长车清洗子表结束 ////////////////////// end else if mPSType = '卷染缸清洗' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', Panel_rgqx, 2); ADOQueryCmd.Post; ////////////////// 保存卷染缸清洗子表 ////////////////////// with CDS_RGQX do begin First; while not Eof do begin if Trim(CDS_RGQX.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxsubid2, 'RGQX', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxsubid2 := Trim(CDS_RGQX.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add(' BCPID=''' + Trim(maxsubid2) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_RGQX.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '卷染缸清洗'; FieldByName('PSID').Value := Trim(maxId); FieldByName('BCPID').Value := Trim(maxsubid2); RTSetSaveDataCDS(ADOQueryCmd, TvRGQX, CDS_RGQX, 'Bs_Cloth_GY_Sub', 0); Post; end; Next; end; end; //////////////// 保存卷染缸清洗子表结束 ////////////////////// end else if mPSType = '机缸清洗' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel_jgqx, 2); ADOQueryCmd.Post; ////////////////// 保存机缸清洗子表 ////////////////////// with CDS_JGQX do begin First; while not Eof do begin if Trim(CDS_JGQX.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxsubid3, 'JGQX', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxsubid3 := Trim(CDS_JGQX.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add(' BCPID=''' + Trim(maxsubid3) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_JGQX.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '机缸清洗'; FieldByName('PSID').Value := Trim(maxId); FieldByName('BCPID').Value := Trim(maxsubid3); RTSetSaveDataCDS(ADOQueryCmd, TvJGQX, CDS_JGQX, 'Bs_Cloth_GY_Sub', 0); Post; end; Next; end; end; //////////////// 保存机缸清洗子表结束 ////////////////////// end else if mPSType = '干定型' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel_dx, 2); ADOQueryCmd.Post; end else if mPSType = '下水定型' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel_fs, 2); ADOQueryCmd.Post; ////////////////// 保存防水(下水定型)子表 ////////////////////// with CDS_fS do begin First; while not Eof do begin if Trim(CDS_fS.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxsubid4, 'FS', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxsubid4 := Trim(CDS_fS.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add(' BCPID=''' + Trim(maxsubid4) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_fS.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '下水定型'; FieldByName('PSID').Value := Trim(maxId); FieldByName('BCPID').Value := Trim(maxsubid4); RTSetSaveDataCDS(ADOQueryCmd, TvFS, CDS_fS, 'Bs_Cloth_GY_Sub', 0); Post; end; Next; end; end; //////////////// 保存防水(下水定型)子表结束 ////////////////////// end else if mPSType = '刮胶' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel_gj, 2); ADOQueryCmd.Post; ////////////////// 保存刮胶子表 ////////////////////// with CDS_gj do begin First; while not Eof do begin if Trim(CDS_gj.fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxsubid5, 'GJ', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxsubid5 := Trim(CDS_gj.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add(' BCPID=''' + Trim(maxsubid5) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_gj.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '刮胶'; FieldByName('PSID').Value := Trim(maxId); FieldByName('BCPID').Value := Trim(maxsubid5); RTSetSaveDataCDS(ADOQueryCmd, TvGJ, CDS_gj, 'Bs_Cloth_GY_Sub', 0); Post; end; Next; end; end; //////////////// 保存刮胶子表结束 ////////////////////// end else if mPSType = '发泡' then begin RTSetsavedata(ADOQueryCmd, 'Bs_Cloth_GY_Main', panel_fp, 2); ADOQueryCmd.Post; /// ////////////////// 保存发泡子表 ////////////////////// with CDS_FP do begin First; while not Eof do begin if Trim(CDS_FP.Fieldbyname('BCPID').AsString) = '' then begin if GetLSNo(ADOQueryTemp, maxsubid6, 'FP', 'Bs_Cloth_GY_Sub', 5, 1) = False then begin ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取配比子流水号失败!', '提示', 0); Exit; end; end else begin maxsubid6 := Trim(CDS_FP.fieldbyname('BCPID').AsString); end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('select * from Bs_Cloth_GY_Sub where '); sql.Add('BCPID=''' + Trim(maxsubid6) + ''''); Open; end; with ADOQueryCmd do begin if Trim(CDS_FP.fieldbyname('BCPID').AsString) = '' then begin Append; end else begin Edit; end; FieldByName('GYType').Value := '发泡'; FieldByName('PSID').Value := Trim(maxId); FieldByName('BCPID').Value := Trim(maxsubid6); RTSetSaveDataCDS(ADOQueryCmd, TvFP, CDS_FP, 'Bs_Cloth_GY_Sub', 0); Post; end; Next; end; end; //////////////// 保存发泡子表结束 ////////////////////// end; end; //////////////// 保存主表结束 ////////////////////// CDS_GX.Next; end; if Trim(mDTMID) = '' then begin if GetLSNo(ADOQueryCmd, MaxDTMID, 'GY', 'Dye_Technics_Main', 3, 1) = False then raise Exception.Create('取最大号失败!'); end else begin MaxDTMID := mDTMID; end; if fPSIDList <> '' then begin with ADOQueryCmd do begin Close; SQL.Clear; SQL.Text := 'DELETE FROM Dye_Process WHERE PSID IN (' + fPSIDList + ')'; // ShowMessage(sql.Text); try ExecSQL; except on E: Exception do ShowMessage('删除失败: ' + E.Message); end; end; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Text := 'DELETE FROM BS_Cloth_GY_Main WHERE PSID IN (' + fPSIDList + ')'; // ShowMessage(sql.Text); try ExecSQL; except on E: Exception do ShowMessage('删除失败: ' + E.Message); end; end; with ADOQueryCmd do begin Close; SQL.Clear; SQL.Text := 'DELETE FROM BS_Cloth_GY_Sub WHERE PSID IN (' + fPSIDList + ')'; // ShowMessage(sql.Text); try ExecSQL; except on E: Exception do ShowMessage('删除失败: ' + E.Message); end; end; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete Dye_Technics_Sub where DTMID=' + quotedstr(trim(MaxDTMID))); execsql; end; DTMPSlist := ''; with CDS_GX do begin First; while not Eof do begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('SELECT * FROM Dye_Technics_Sub WHERE 1=2'); Open; end; with ADOQueryCmd do begin Append; FieldByName('PSNO').Value := Trim(CDS_GX.fieldbyname('PSNO').AsString); FieldByName('DTMID').Value := Trim(MaxDTMID); FieldByName('PSId').Value := Trim(CDS_GX.fieldbyname('PSId').AsString); Post; end; if DTMPSlist = '' then begin DTMPSlist := Trim(CDS_GX.fieldbyname('PSNO').AsString) + '.' + Trim(CDS_GX.fieldbyname('PSName').AsString); end else begin DTMPSlist := DTMPSlist + '→' + Trim(CDS_GX.fieldbyname('PSNO').AsString) + '.' + Trim(CDS_GX.fieldbyname('PSName').AsString); end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('SELECT * FROM Dye_Process WHERE PSID = ' + QuotedStr(Trim(CDS_GX.fieldbyname('PSId').AsString))); Open; end; with ADOQueryCmd do begin Edit; FieldByName('DTMName').Value := Trim(CDS_2.FieldByName('DTMName').AsString); FieldByName('DTMID').Value := Trim(MaxDTMID); Post; end; Next; end; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from Dye_Technics_Main where DTMID =' + quotedstr(Trim(MaxDTMID))); Open; end; with ADOQueryCmd do begin if ADOQueryCmd.IsEmpty then begin Append; FieldByName('Filler').Value := Trim(DName); FieldByName('filltime').Value := SGetServerDateTime(ADOQueryTemp); FieldByName('DTMID').Value := Trim(MaxDTMID); end else begin Edit; FieldByName('Editer').Value := Trim(DName); FieldByName('Edittime').Value := SGetServerDateTime(ADOQueryTemp); end; FieldByName('DTMNo').Value := CDS_2.FieldByName('DTMNo').AsString; FieldByName('DTMName').Value := CDS_2.FieldByName('DTMName').AsString; FieldByName('DTMPSlist').Value := Trim(DTMPSlist); Post; end; ADOQueryCmd.Connection.CommitTrans; // FPSID := maxId; Result := True; except Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('保存失败!', '提示', 0); end; end; procedure TfrmDyeSimpleTechnicsList.Tv1DblClick(Sender: TObject); begin with CDS_GX do begin Append; FieldByName('PSNO').Value := CDS_GX.RecordCount + 1; FieldByName('PSType').Value := CDS_PSType.fieldbyname('PSType').AsString; FieldByName('PSId').Value := ''; post; end; InitGXDetails(); end; procedure TfrmDyeSimpleTechnicsList.Tv2FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin SetStatus(); InitGlide(); InitGXDetails(); // ShowMessage(CDS_2.FieldByName('DTMID').AsString); if (CDS_2.FieldByName('DTMID').AsString = '') or (CDS_2.FieldByName('DTMID').AsString = null) then begin InitPSTypeGrid(); end else begin ADOQueryCMD.DisableControls; with ADOQueryCMD do begin // Filtered := False; Close; SQL.Clear; sql.Add(' select *,PSXH=0 from Dye_Technics where 1 = 2 '); Open; end; // SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryCMD, CDS_PSType); SInitCDSData(ADOQueryCMD, CDS_PSType); end; end; procedure TfrmDyeSimpleTechnicsList.ButtonEdit(Sender: TObject; AButtonIndex: Integer); begin try frmDyeProcessDefin := TfrmDyeProcessDefin.Create(Application); with frmDyeProcessDefin do begin FPSType := self.CDS_GX.FieldByName('PSType').Value; FPSID := Self.CDS_GX.FieldByName('PSID').Value; BtnInt := 3;//查看 TbSave.visible := false; TbUpFile.Visible := False; if ShowModal = 1 then begin end; end; finally frmDyeProcessDefin.Free; end; end; procedure TfrmDyeSimpleTechnicsList.DTMNoChange(Sender: TObject); begin ToolButton2.Click; end; procedure TfrmDyeSimpleTechnicsList.TchkClick(Sender: TObject); begin if CDS_2.IsEmpty then exit; if CDS_2.Locate('ssel', true, []) = false then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; with CDS_2 do begin DisableControls; First; while not eof do begin if Fieldbyname('ssel').AsBoolean then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('update Dye_Technics_Main SET status=''1'' '); sql.Add('where DTMID =' + quotedstr(trim(CDS_2.fieldbyname('DTMID').AsString))); execsql; end; end; next; end; First; EnableControls; end; InitGrid(); ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('操作失败!', '提示信息', 0); end; end; procedure TfrmDyeSimpleTechnicsList.TNochkClick(Sender: TObject); begin if CDS_2.IsEmpty then exit; if CDS_2.Locate('ssel', true, []) = false then begin Application.MessageBox('没有选择数据!', '提示', 0); Exit; end; try ADOQueryCmd.Connection.BeginTrans; with CDS_2 do begin DisableControls; First; while not eof do begin if Fieldbyname('ssel').AsBoolean then begin with ADOQueryCmd do begin close; sql.Clear; sql.Add('update Dye_Technics_Main SET status=''0'' '); sql.Add('where DTMID =' + quotedstr(trim(CDS_2.fieldbyname('DTMID').AsString))); execsql; end; end; next; end; First; EnableControls; end; InitGrid(); ADOQueryCmd.Connection.CommitTrans; except ADOQueryCmd.Connection.RollbackTrans; application.MessageBox('操作失败!', '提示信息', 0); end; end; procedure TfrmDyeSimpleTechnicsList.TbRGQXAddClick(Sender: TObject); begin with CDS_RGQX do begin Append; CDS_RGQX.FieldByName('serialno').Value := CDS_RGQX.RecordCount + 1; Post; end; end; procedure TfrmDyeSimpleTechnicsList.TbRGQXDelClick(Sender: TObject); var i: Integer; begin if not CDS_RGQX.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_RGQX.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=' + quotedStr(Trim(CDS_RGQX.fieldbyname('BCPID').AsString))); ExecSQL; end; end; CDS_RGQX.Delete; end else exit; i := 0; CDS_RGQX.First; while not CDS_RGQX.Eof do begin i := i + 1; CDS_RGQX.Edit; CDS_RGQX.fieldByName('serialno').value := i; CDS_RGQX.Post; CDS_RGQX.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeSimpleTechnicsList.TbCCQXAddClick(Sender: TObject); begin with CDS_CCQX do begin Append; CDS_CCQX.FieldByName('serialno').Value := CDS_CCQX.RecordCount + 1; Post; end; end; procedure TfrmDyeSimpleTechnicsList.TbccqxClearClick(Sender: TObject); begin ClearAllTextEditsByHint(panel_ccqx, '长车清洗温控'); end; procedure TfrmDyeSimpleTechnicsList.TbCCQXDelClick(Sender: TObject); var i: Integer; begin if not CDS_CCQX.IsEmpty then begin if Application.MessageBox('确定要删除数据吗?', '提示', 32 + 4) = IDYES then begin if Trim(CDS_CCQX.fieldbyname('BCPID').AsString) <> '' then begin with ADOQueryCmd do begin Close; sql.Clear; sql.Add('delete BS_Cloth_GY_Sub where BCPID=' + quotedStr(Trim(CDS_CCQX.fieldbyname('BCPID').AsString))); ExecSQL; end; end; CDS_CCQX.Delete; end else exit; i := 0; CDS_CCQX.First; while not CDS_CCQX.Eof do begin i := i + 1; CDS_CCQX.Edit; CDS_CCQX.fieldByName('serialno').value := i; CDS_CCQX.Post; CDS_CCQX.Next; end; end else begin Application.MessageBox('无可删除数据!', '提示', 0); Exit; end; end; procedure TfrmDyeSimpleTechnicsList.TbCCQXReplaceClick(Sender: TObject); begin FillAllTextEditsWithValue(panel_ccqx, '长车清洗温控', FindLastEditedTextEdit(panel_ccqx, '长车清洗温控')); end; procedure TfrmDyeSimpleTechnicsList.cxGridDBColumn1PropertiesButtonClick(Sender: TObject; AButtonIndex: Integer); begin try frmDyeProcessDefin := TfrmDyeProcessDefin.Create(Application); with frmDyeProcessDefin do begin // FPSType := self.CDS_1.FieldByName('PSType').Value; // FPSID := Self.CDS_1.FieldByName('PSID').Value; BtnInt := 3;//查看 TbSave.visible := false; TbUpFile.Visible := False; if ShowModal = 1 then begin end; end; finally frmDyeProcessDefin.Free; end; end; procedure TfrmDyeSimpleTechnicsList.cxTabControl1Change(Sender: TObject); begin SetStatus(); InitGrid(); end; procedure TfrmDyeSimpleTechnicsList.FormCreate(Sender: TObject); begin inherited; fmanage := Trim(DParameters1); end; procedure TfrmDyeSimpleTechnicsList.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 TfrmDyeSimpleTechnicsList.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; function TfrmDyeSimpleTechnicsList.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; end.