unit U_PatternSel; 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, jpeg, U_SLT, ComObj, Menus, cxLookAndFeels, cxLookAndFeelPainters, cxTLdxBarBuiltInMenu, cxNavigator, dxBarBuiltInMenu, cxPC, Math, RM_BarCode, dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges, IdExplicitTLSClientServerBase, U_BaseHelp, cxContainer, dxDBBarCode, dxBarCode, Vcl.Clipbrd, cxTextEdit, BtnEdit, StrUtils, U_BaseList, System.ImageList, Vcl.ImgList; type FdDy = record inc: integer; //客户端套接字句柄 FDdys: string[32]; //客户端套接字 FdDysName: string[32]; //客户端套接字 end; TfrmPatternSel = class(TfrmBasehelp) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; GPM_1: TcxGridPopupMenu; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; Panel1: TPanel; TBFilter: TToolButton; v1CYNo: TcxGridDBColumn; DS_1: TDataSource; ADOQueryMain: TADOQuery; CDS_1: TClientDataSet; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; ODPat: TOpenDialog; IdFTP1: TIdFTP; SaveDialog1: TSaveDialog; Label3: TLabel; C_Code: TEdit; Panel2: TPanel; DSCYNO: TDataSource; CDS_CYNO: TClientDataSet; Label11: TLabel; Label12: TLabel; Panel3: TPanel; adoqueryPicture: TADOQuery; v1Column9: TcxGridDBColumn; Label4: TLabel; C_Name: TEdit; OpenDialog1: TOpenDialog; PM_1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; v1Column11: TcxGridDBColumn; Panel7: TPanel; Panel4: TPanel; Label14: TLabel; LBCPAP1: TLabel; Button1: TButton; Button2: TButton; TCBNOR1: TComboBox; RMBarCodeObject1: TRMBarCodeObject; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; DataSource3: TDataSource; CDS_Sub: TClientDataSet; Tv1Column9: TcxGridDBColumn; cxGridPopupMenu2: TcxGridPopupMenu; N3: TMenuItem; Panel9: TPanel; Panel10: TPanel; GroupBox1: TGroupBox; ScrollBox1: TScrollBox; ADOQueryPrint: TADOQuery; CDS_Label: TClientDataSet; Tv1Column1: TcxGridDBColumn; cxGrid2: TcxGrid; TV2: TcxGridDBTableView; cxGridDBColumn2: TcxGridDBColumn; cxGridLevel1: TcxGridLevel; DS_2: TDataSource; CDS_2: TClientDataSet; ADOQueryHZ: TADOQuery; Tv1Column2: TcxGridDBColumn; cxGrid3: TcxGrid; TV3: TcxGridDBTableView; cxGridDBColumn1: TcxGridDBColumn; cxGridLevel2: TcxGridLevel; CDS_3: TClientDataSet; DS_3: TDataSource; ADOQuery1: TADOQuery; Tv1Column3: TcxGridDBColumn; Tv1Column4: TcxGridDBColumn; Tv1Column8: TcxGridDBColumn; procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxDBTreeList1DblClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure TBFilterClick(Sender: TObject); procedure CYNoChange(Sender: TObject); procedure C_CodeKeyPress(Sender: TObject; var Key: Char); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure TCBNOR1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); procedure N3Click(Sender: TObject); procedure TextEdit(Sender: TObject); procedure HXNameBtnUpClick(Sender: TObject); procedure HXNameBtnDnClick(Sender: TObject); procedure cbbHXChange(Sender: TObject); procedure v1CYNoPropertiesEditValueChanged(Sender: TObject); procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure TV2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); private { Private declarations } CurrentPage, RecordsNumber: Integer; CTID: string; PState: Integer; FCTID, FTopID, FJurisdiction, FCTType: string; procedure SetStatus(); procedure InitGrid(); procedure InitHZ(); procedure InitGY(); procedure ReadINIFile(); procedure InitImage(); function SaveData(): Boolean; procedure LookImage(FileName: string); public Ftype, ftype2: string; dFdDy: array[0..20] of FdDy; //客户端连接数组 { Public declarations } end; var frmPatternSel: TfrmPatternSel; Mach: array of TfrmSlt; implementation uses U_DataLink, U_RTFun, U_ClothInfoInput, U_CloInfoFileUp, U_ClothTypeSel, U_ZDYHelp, U_LabelPrint; {$R *.dfm} procedure TfrmPatternSel.LookImage(FileName: string); var sFieldName: string; begin sFieldName := leftbstr(ExtractFilePath(Application.ExeName), 1) + ':\图片查看'; if not DirectoryExists(pchar(sFieldName)) then CreateDirectory(pchar(sFieldName), nil); sFieldName := sFieldName + '\' + trim(FileName); try IdFTP1.Host := ReadINIFileStr('SYSTEMSET.INI', 'SERVER', '服务器地址', '127.0.0.1'); IdFTP1.Username := 'three'; IdFTP1.Password := '641010'; IdFTP1.Connect(); except end; if IdFTP1.Connected then begin application.ProcessMessages; try // ShowMessage(PChar(Trim('D:\' + Trim(FileName)))); IdFTP1.Get(Trim(UserDataFlag + 'YP\' + FileName), sFieldName, true, false); except Application.MessageBox('客户图样文件不存在', '提示', MB_ICONWARNING); IdFTP1.Quit; Exit; end; end else begin Application.MessageBox('无法连接文件服务器', '提示', MB_ICONWARNING); IdFTP1.Quit; Exit; end; if IdFTP1.Connected then IdFTP1.Quit; ShellExecute(Handle, 'open', PChar(sFieldName), '', '', SW_SHOWNORMAL); end; procedure TfrmPatternSel.SetStatus(); begin end; procedure TfrmPatternSel.InitGrid(); var fwhere, MBCIID, Pwhere: string; begin Panel2.Visible := True; Panel2.Refresh; if not CDS_1.IsEmpty then MBCIID := Trim(CDS_1.FieldByName('BCIID').AsString) else MBCIID := ''; Pwhere := SGetFilters(Panel1, 1, 2); if trim(Pwhere) <> '' then begin if fwhere <> '' then fwhere := fwhere + ' and ' + trim(Pwhere) else fwhere := ' where ' + trim(Pwhere); end; // if CDS_3.IsEmpty = False then // begin if fwhere <> '' then fwhere := fwhere + ' and C_Technology=' + QuotedStr(trim(cds_2.FieldByName('C_Technology').AsString)) + ' and C_Technologytype=' + QuotedStr(trim(cds_3.FieldByName('C_Technology').AsString)) else fwhere := ' where C_Technology=' + QuotedStr(trim(cds_2.FieldByName('C_Technology').AsString)) + ' and C_Technologytype=' + QuotedStr(trim(cds_3.FieldByName('C_Technology').AsString)); // end; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; Filtered := False; sql.Clear; sql.Add(' exec P_BS_PatInfo_Get '); sql.Add(' @CTID='''' '); sql.Add(',@pageIndex=' + inttostr(CurrentPage)); sql.Add(',@pageSize=' + inttostr(RecordsNumber)); sql.Add(',@criteria= ' + quotedstr(fwhere)); // ShowMessage(sql.Text); Open; end; SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); TV1.DataController.Filter.Clear; LBCPAP1.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber)); finally ADOQueryMain.EnableControls; TV1.DataController.Filter.Clear; end; Panel2.Visible := False; if MBCIID <> '' then CDS_1.Locate('BCIID', MBCIID, []); end; procedure TfrmPatternSel.FormClose(Sender: TObject; var Action: TCloseAction); var i, j: integer; begin inherited; j := length(Mach); if j > 0 then begin for i := 0 to j - 1 do begin Mach[i].free; end; end; SetLength(Mach, 0); Action := cahide; end; procedure TfrmPatternSel.TBCloseClick(Sender: TObject); begin if DirectoryExists(ExtractFileDir('D:\Right1209')) then winexec('cmd /c rd /s /q D:\Right1209', sw_hide); Close; end; procedure TfrmPatternSel.FormShow(Sender: TObject); begin inherited; // ReadCxGrid(self.Caption + 'TV1', Tv1, '样品管理'); // pnlreport.Top := FTop + 110; application.ProcessMessages; RecordsNumber := 500; CurrentPage := 1; SetStatus(); InitHZ(); InitGY(); InitGrid(); end; procedure TfrmPatternSel.cbbHXChange(Sender: TObject); begin InitImage(); end; procedure TfrmPatternSel.cxDBTreeList1DblClick(Sender: TObject); begin InitGrid(); end; procedure TfrmPatternSel.TBRafreshClick(Sender: TObject); begin initHZ(); InitGY(); InitGrid(); end; procedure TfrmPatternSel.InitGY(); begin with ADOQuery1 do begin Close; sql.Clear; sql.Add(' select A.*,itemtext as C_Technology from SY_Dict_Item A where A.DictId=''' + cds_2.FieldByName('DictId').AsString + ''''); sql.Add('and itemtext=''' + trim(ftype2) + ''' '); Open; end; SCreateCDS(ADOQuery1, CDS_3); SInitCDSData(ADOQuery1, CDS_3); end; procedure TfrmPatternSel.InitHZ(); begin with ADOQueryHZ do begin Close; sql.Clear; sql.Add(' select A.*,DictName as C_Technology from Sy_Dict A where A.Type=''GYName'''); sql.Add('and DictName=''' + trim(fTYPE) + ''' '); // sql.Add(' select distinct C_Technology from Bs_Pattern_Info '); // sql.Add('where C_Technology=''' + trim(fTYPE) + ''' '); // ShowMessage(sql.Text); Open; end; SCreateCDS(ADOQueryHZ, CDS_2); SInitCDSData(ADOQueryHZ, CDS_2); end; procedure TfrmPatternSel.TBFilterClick(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; end; procedure TfrmPatternSel.CYNoChange(Sender: TObject); begin //if Length(Trim(TEdit(Sender).Text))<4 then Exit; if ADOQueryMain.Active then begin SDofilter(ADOQueryMain, SGetFilters(Panel1, 1, 2)); SCreateCDS(ADOQueryMain, CDS_1); SInitCDSData(ADOQueryMain, CDS_1); end; end; procedure TfrmPatternSel.ReadINIFile(); var programIni: Tinifile; //配置文件名 FileName: string; begin FileName := ExtractFilePath(Paramstr(0)) + 'SYSTEMSET.INI'; programIni := Tinifile.create(FileName); server := programIni.ReadString('SERVER', '服务器地址', '127.0.0.1'); programIni.Free; end; procedure TfrmPatternSel.InitImage(); var i, j: integer; jpg: TJpegImage; myStream: TADOBlobStream; begin j := length(Mach); if j > 0 then begin for i := 0 to j - 1 do begin Mach[i].free; end; end; SetLength(Mach, 0); if CDS_1.IsEmpty then exit; try with adoqueryPicture do begin close; sql.Clear; sql.Add(' select A.TFID,A.WBID,A.FilesOther,A.FileName from TP_File A '); sql.add('where A.WBID=' + quotedstr(trim(CDS_1.fieldbyname('BCIID').AsString))); open; end; j := adoqueryPicture.RecordCount; if j < 1 then exit; adoqueryPicture.DisableControls; adoqueryPicture.First; SetLength(Mach, j); jpg := TJpegImage.Create(); for i := 0 to j - 1 do begin if triM(adoqueryPicture.fieldbyname('FilesOther').AsString) <> '' then begin myStream := tadoblobstream.Create(tblobfield(adoqueryPicture.fieldbyname('FilesOther')), bmread); jpg.LoadFromStream(myStream); Mach[i] := TfrmSlt.Create(Self); Mach[i].Name := trim(adoqueryPicture.fieldbyname('TFID').AsString); Mach[i].Parent := ScrollBox1; Mach[i].Left := 0 + i * 165; Mach[i].Init(adoqueryPicture.fieldbyname('TFID').AsString, adoqueryPicture.fieldbyname('FileName').AsString, jpg); end; adoqueryPicture.Next; end; adoqueryPicture.EnableControls; finally jpg.free; application.ProcessMessages; end; end; procedure TfrmPatternSel.C_CodeKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; function TfrmPatternSel.SaveData(): Boolean; var maxId, CRID: string; begin try ADOQueryCmd.Connection.BeginTrans; if CDS_1.FieldByName('BCIID').AsString = '' then begin if GetLSNo(ADOQueryCmd, maxId, 'BPI', 'Bs_Pattern_Info', 4, 1) = False then begin Result := False; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('取最大号失败!', '提示', 0); Exit; end; end else begin maxId := CDS_1.FieldByName('BCIID').AsString; end; with ADOQueryCmd do begin Close; sql.Clear; sql.Add('select * from Bs_Pattern_Info where BCIID=''' + trim(maxId) + ''' '); Open; end; with ADOQueryCmd do begin if ADOQueryCmd.IsEmpty then begin Append; FieldByName('BCIID').Value := Trim(maxId); FieldByName('Filler').Value := cds_1.FieldByName('Filler').AsString; FieldByName('FillTime').Value := cds_1.FieldByName('FillTime').Value; end else begin FieldByName('editer').Value := trim(DName); FieldByName('edittime').Value := SGetServerDate(ADOQueryTemp); end; RTSetSaveDataCDS(ADOQueryCmd, Tv1, CDS_1, 'Bs_Pattern_Info', 1); Post; end; with CDS_1 do begin Edit; FieldByName('BCIID').Value := Trim(maxId); end; ADOQueryCmd.Connection.CommitTrans; Result := True; except Result := True; ADOQueryCmd.Connection.RollbackTrans; Application.MessageBox('增行失败!', '提示', 0); end; end; procedure TfrmPatternSel.TextEdit(Sender: TObject); var mvalue, FFieldName: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_1 do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; if mvalue = '' then mvalue := '0'; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update BS_Cloth_Info set ' + FFieldName + '=' + (Trim(mvalue))); sql.Add('where BCIID=' + quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString))); ExecSQL; end; Tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmPatternSel.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin inherited; if cds_1.IsEmpty then exit; ModalResult := 1; end; procedure TfrmPatternSel.Tv1FocusedRecordChanged(Sender: TcxCustomGridTableView; APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord; ANewItemRecordFocusingChanged: Boolean); begin InitImage(); end; procedure TfrmPatternSel.TV2CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin inherited; InitGY(); InitGrid(); end; procedure TfrmPatternSel.v1CYNoPropertiesEditValueChanged(Sender: TObject); var mvalue, FFieldName: string; begin mvalue := TcxTextEdit(Sender).EditingText; FFieldName := Trim(Tv1.Controller.FocusedColumn.DataBinding.FilterFieldName); with CDS_1 do begin Edit; FieldByName(FFieldName).Value := mvalue; Post; end; with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('update Bs_Pattern_Info set ' + FFieldName + '=' + QuotedStr(Trim(mvalue))); sql.Add('where BCIID=' + quotedstr(Trim(CDS_1.fieldbyname('BCIID').AsString))); ExecSQL; end; Tv1.Controller.EditingController.ShowEdit(); end; procedure TfrmPatternSel.N1Click(Sender: TObject); begin SelOKNoFiler(Tv1, True); end; procedure TfrmPatternSel.N2Click(Sender: TObject); begin SelOKNoFiler(Tv1, False); end; procedure TfrmPatternSel.N3Click(Sender: TObject); begin Clipboard.SetTextBuf(PChar(Trim(CDS_1.fieldbyname(TV1.Controller.FocusedColumn.DataBinding.FilterFieldName).AsString))); end; procedure TfrmPatternSel.TCBNOR1Change(Sender: TObject); begin RecordsNumber := StrToInt(TCBNOR1.Text); CurrentPage := 1; C_Code.SetFocus; InitGrid(); end; procedure TfrmPatternSel.HXNameBtnDnClick(Sender: TObject); begin TBtnEditC(Sender).Text := ''; TBtnEditC(Sender).TxtCode := ''; end; procedure TfrmPatternSel.HXNameBtnUpClick(Sender: TObject); begin try frmZDYHelp := TfrmZDYHelp.Create(Application); with frmZDYHelp do begin flag := 'HX' + Trim(Self.CDS_1.fieldbyname('CYNO').AsString); flagname := '花型'; if ShowModal = 1 then begin TEdit(Sender).Text := Trim(ClientDataSet1.fieldbyname('ZDYName').AsString); end; end; finally frmZDYHelp.Free; end; end; procedure TfrmPatternSel.Button1Click(Sender: TObject); begin if CurrentPage > 1 then CurrentPage := CurrentPage - 1; InitGrid(); end; procedure TfrmPatternSel.Button2Click(Sender: TObject); begin if CurrentPage < CDS_1.FieldByName('TotalCount').AsInteger / RecordsNumber then CurrentPage := CurrentPage + 1; InitGrid(); end; end.