unit U_CPManageFMSel; 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, cxContainer, dxDBBarCode, dxBarCode, U_BaseHelp, System.ImageList, Vcl.ImgList; type FdDy = record inc: integer; //客户端套接字句柄 FDdys: string[32]; //客户端套接字 FdDysName: string[32]; //客户端套接字 end; TfrmCPManageFMSel = class(TFrmBaseHelp) ToolBar1: TToolBar; TBRafresh: TToolButton; TBClose: TToolButton; DataSource1: TDataSource; ADOQueryTree20: TADOQuery; ADOQueryTemp: TADOQuery; ADOQueryCmd: TADOQuery; cxGridPopupMenu1: TcxGridPopupMenu; Tv1: TcxGridDBTableView; cxGrid1Level1: TcxGridLevel; cxGrid1: TcxGrid; cxSplitter1: TcxSplitter; Panel1: TPanel; Label2: TLabel; CYID: TEdit; v1CYNo: TcxGridDBColumn; v1Column3: TcxGridDBColumn; DataSource2: TDataSource; ADOQueryMain: TADOQuery; CDS_Main: TClientDataSet; v1Column12: TcxGridDBColumn; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; ODPat: TOpenDialog; IdFTP1: TIdFTP; SaveDialog1: TSaveDialog; btnOK: TToolButton; Label3: TLabel; CYNO: TEdit; Panel2: TPanel; v1Column19: TcxGridDBColumn; DSCYNO: TDataSource; CDS_CYNO: TClientDataSet; ADOQueryTree: TClientDataSet; Panel5: TPanel; cxDBTreeList1: TcxDBTreeList; cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn; Label11: TLabel; Label12: TLabel; Panel3: TPanel; GroupBox1: TGroupBox; ScrollBox1: TScrollBox; adoqueryPicture: TADOQuery; v1Column1: TcxGridDBColumn; v1Column9: TcxGridDBColumn; Label4: TLabel; CYName: TEdit; Label1: TLabel; CYColor: TEdit; Label6: TLabel; CYCF: TEdit; Label7: TLabel; ZCYNote: TEdit; OpenDialog1: TOpenDialog; Label9: TLabel; CYKZ: TEdit; Label8: TLabel; CYMF: TEdit; PopupMenu1: TPopupMenu; N1: TMenuItem; N2: TMenuItem; v1Column11: TcxGridDBColumn; Panel7: TPanel; Panel8: TPanel; cxTabControl1: TcxTabControl; Panel4: TPanel; Label14: TLabel; LBCPAP1: TLabel; Button1: TButton; Button2: TButton; TCBNOR1: TComboBox; RMBarCodeObject1: TRMBarCodeObject; Label5: TLabel; Label10: TLabel; XX1: TEdit; ShaZhi: TEdit; Tv1Column5: TcxGridDBColumn; Tv1Column6: TcxGridDBColumn; Tv1Column7: TcxGridDBColumn; procedure FormDestroy(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure TBCloseClick(Sender: TObject); procedure FormShow(Sender: TObject); procedure cxDBTreeList1DblClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure CYIDKeyPress(Sender: TObject; var Key: Char); procedure CYNoChange(Sender: TObject); procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure CYNOKeyPress(Sender: TObject; var Key: Char); procedure Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure N1Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure TCBNOR1Change(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure btnOKClick(Sender: TObject); private { Private declarations } CurrentPage, RecordsNumber: Integer; CPID: string; PState: Integer; FCPID, FTopID: string; FJurisdiction: string; procedure SetStatus(); procedure InitTree(); procedure InitGrid(); procedure ReadINIFile(); procedure InitImage(); procedure LookImage(FileName: string); public dFdDy: array[0..20] of FdDy; //客户端连接数组 { Public declarations } end; var frmCPManageFMSel: TfrmCPManageFMSel; Mach: array of TfrmSlt; implementation uses U_DataLink, U_RTFun, StrUtils; {$R *.dfm} procedure TfrmCPManageFMSel.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 TfrmCPManageFMSel.SetStatus(); begin end; procedure TfrmCPManageFMSel.InitTree(); var i: Integer; begin with ADOQueryTree20 do begin Close; SQL.Clear; SQL.Add('select * from CP_Type order by CPlevel,CPOrder,CPName'); Open; end; SCreateCDS(ADOQueryTree20, ADOQueryTree); SInitCDSData(ADOQueryTree20, ADOQueryTree); cxDBTreeList1.Items[0].Expand(false); //cxDBTreeList1.Items[1].Expand(False); ADOQueryTree.Locate('cpname', '成品', []); end; procedure TfrmCPManageFMSel.InitGrid(); var fwhere, Pwhere: string; begin Panel2.Visible := True; Panel2.Refresh; // case cxTabControl1.TabIndex of // 0: // begin // fwhere := 'where status=''0'' '; // end; // 1: // begin // fwhere := 'where status=''1'' '; // end; // end; Pwhere := SGetFilters(Panel1, 1, 2); if trim(Pwhere) <> '' then begin if fwhere <> '' then fwhere := fwhere + ' and ' + trim(Pwhere) else fwhere := ' where ' + trim(Pwhere); end; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Close; Filtered := False; sql.Clear; sql.Add(' exec P_Page_YP '); sql.Add('@CYType=' + quotedstr(Trim(ADOQueryTree.fieldbyname('CPID').AsString))); sql.Add(',@pageIndex=' + inttostr(CurrentPage)); sql.Add(',@pageSize=' + inttostr(RecordsNumber)); sql.Add(',@criteria= ' + quotedstr(fwhere)); // ShowMessage(SQL.Text); Open; end; SCreateCDS(ADOQueryMain, CDS_Main); SInitCDSData(ADOQueryMain, CDS_Main); LBCPAP1.Caption := inttostr(CurrentPage) + '/' + inttostr(ceil(CDS_Main.FieldByName('TotalCount').AsInteger / RecordsNumber)); finally ADOQueryMain.EnableControls; end; Panel2.Visible := False; end; procedure TfrmCPManageFMSel.FormDestroy(Sender: TObject); begin inherited; frmCPManageFMSel := nil; end; procedure TfrmCPManageFMSel.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); // writeCxGrid(self.Caption+tv1.Name,tv1); // Application := mainApplication; Action := cafree; end; procedure TfrmCPManageFMSel.TBCloseClick(Sender: TObject); begin WriteCxGrid(self.Caption, Tv1, '样品管理'); if DirectoryExists(ExtractFileDir('D:\Right1209')) then winexec('cmd /c rd /s /q D:\Right1209', sw_hide); Close; end; procedure TfrmCPManageFMSel.FormShow(Sender: TObject); begin inherited; Panel3.Align := alclient; ReadCxGrid(self.Caption, Tv1, '样品管理'); RecordsNumber := 100; CurrentPage := 1; InitTree(); SetStatus(); InitGrid(); end; procedure TfrmCPManageFMSel.cxDBTreeList1DblClick(Sender: TObject); begin InitGrid(); end; procedure TfrmCPManageFMSel.TBRafreshClick(Sender: TObject); begin InitTree(); InitGrid(); end; procedure TfrmCPManageFMSel.CYIDKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin if Trim(CYID.Text) = '' then Exit; with ADOQueryMain do begin Close; Filtered := False; sql.Clear; sql.Add('exec P_Select_CP_YDang :Code,1,'''' '); Parameters.ParamByName('Code').Value := Trim(CYID.Text); Open; end; SCreateCDS(ADOQueryMain, CDS_Main); SInitCDSData(ADOQueryMain, CDS_Main); CYID.Text := ''; ADOQueryTree.Locate('CPID', CPID, []); end; end; procedure TfrmCPManageFMSel.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_Main); SInitCDSData(ADOQueryMain, CDS_Main); end; end; procedure TfrmCPManageFMSel.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 TfrmCPManageFMSel.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if CDS_Main.IsEmpty then Exit; InitImage(); end; procedure TfrmCPManageFMSel.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_Main.IsEmpty then exit; try with adoqueryPicture do begin close; sql.Clear; sql.Add(' select A.TFID,A.WBID,A.FilesOther,B.FileName from TP_File A,XD_File B '); sql.add('where A.TFID =B.XFID and A.WBID=' + quotedstr(trim(CDS_Main.fieldbyname('CYID').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 TfrmCPManageFMSel.CYNOKeyPress(Sender: TObject; var Key: Char); begin if Key = #13 then begin CurrentPage := 1; InitGrid(); end; end; procedure TfrmCPManageFMSel.Tv1CellDblClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if CDS_Main.IsEmpty then Exit; ModalResult := 1; end; procedure TfrmCPManageFMSel.N1Click(Sender: TObject); begin SelOKNo(CDS_Main, True); end; procedure TfrmCPManageFMSel.N2Click(Sender: TObject); begin SelOKNo(CDS_Main, False); end; procedure TfrmCPManageFMSel.TCBNOR1Change(Sender: TObject); begin RecordsNumber := StrToInt(TCBNOR1.Text); CurrentPage := 1; cyno.SetFocus; InitGrid(); end; procedure TfrmCPManageFMSel.btnOKClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; ModalResult := 1; end; procedure TfrmCPManageFMSel.Button1Click(Sender: TObject); begin if CurrentPage > 1 then CurrentPage := CurrentPage - 1; InitGrid(); end; procedure TfrmCPManageFMSel.Button2Click(Sender: TObject); begin if CurrentPage < CDS_Main.FieldByName('TotalCount').AsInteger / RecordsNumber then CurrentPage := CurrentPage + 1; InitGrid(); end; end.