unit U_CPManageCX; 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_CX; type TfrmCPManage_CX = class(TForm) 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; ToolButton2: TToolButton; Label1: TLabel; CYName: TEdit; Label4: TLabel; DefStr6: TEdit; Label5: TLabel; defnote5: TEdit; v1Column1: TcxGridDBColumn; v1Column2: TcxGridDBColumn; v1Column3: TcxGridDBColumn; v1Column4: TcxGridDBColumn; v1Column5: TcxGridDBColumn; v1Column6: TcxGridDBColumn; v1Column7: TcxGridDBColumn; v1Column8: TcxGridDBColumn; v1Column9: TcxGridDBColumn; v1Column11: TcxGridDBColumn; DataSource2: TDataSource; ADOQueryMain: TADOQuery; CDS_Main: TClientDataSet; v1Column12: TcxGridDBColumn; ToolButton1: TToolButton; RM1: TRMGridReport; RMDB_Main: TRMDBDataSet; ODPat: TOpenDialog; IdFTP1: TIdFTP; SaveDialog1: TSaveDialog; v1Column14: TcxGridDBColumn; v1Column15: TcxGridDBColumn; Label3: TLabel; CYNO: TEdit; v1Column16: TcxGridDBColumn; Panel2: TPanel; DSCYNO: TDataSource; CDS_CYNO: TClientDataSet; Edit1: TEdit; Label6: TLabel; Label7: TLabel; CYKZ: TEdit; Label8: TLabel; Label9: TLabel; CYCF: TEdit; CYECF: TEdit; Label10: TLabel; CYMF: TEdit; v1Column42: TcxGridDBColumn; v1Column10: TcxGridDBColumn; v1Column13: TcxGridDBColumn; ADOQueryTree: TClientDataSet; Panel5: TPanel; cxDBTreeList1: TcxDBTreeList; cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn; Label11: TLabel; Label12: TLabel; v1Column17: TcxGridDBColumn; v1Column18: TcxGridDBColumn; v1Column20: TcxGridDBColumn; v1Column21: TcxGridDBColumn; v1Column24: TcxGridDBColumn; v1Column25: TcxGridDBColumn; defstr1: TEdit; Label13: TLabel; v1Column26: TcxGridDBColumn; v1Column27: TcxGridDBColumn; v1Column28: TcxGridDBColumn; v1Column29: TcxGridDBColumn; v1Column30: TcxGridDBColumn; v1Column31: TcxGridDBColumn; DefStr2: TEdit; Label14: TLabel; defstr7: TEdit; Label15: TLabel; defnote3: TEdit; Label16: TLabel; v1Column32: TcxGridDBColumn; v1Column33: TcxGridDBColumn; Panel3: TPanel; GroupBox1: TGroupBox; ScrollBox1: TScrollBox; adoqueryPicture: TADOQuery; v1Column22: TcxGridDBColumn; v1Column23: TcxGridDBColumn; v1Column34: TcxGridDBColumn; v1Column35: TcxGridDBColumn; v1Column36: TcxGridDBColumn; v1Column37: TcxGridDBColumn; v1Column38: TcxGridDBColumn; v1Column39: TcxGridDBColumn; v1Column40: TcxGridDBColumn; TSel: TToolButton; v1Ssel: 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 cxDBTreeList1DblClick(Sender: TObject); procedure TBAddClick(Sender: TObject); procedure TBRafreshClick(Sender: TObject); procedure ToolButton3Click(Sender: TObject); procedure ToolButton2Click(Sender: TObject); procedure CYIDKeyPress(Sender: TObject; var Key: Char); procedure CYNoChange(Sender: TObject); procedure ToolButton1Click(Sender: TObject); procedure ToolButton5Click(Sender: TObject); procedure ToolButton6Click(Sender: TObject); procedure Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); procedure CYMFChange(Sender: TObject); procedure CYNameChange(Sender: TObject); procedure CYNOKeyPress(Sender: TObject; var Key: Char); procedure TSelClick(Sender: TObject); private { Private declarations } CPID:string; PState:Integer; FCPID,FTopID:String; procedure InitTree(); procedure InitGrid(); procedure ReadINIFile(); procedure InitImage(); procedure TJGS(); public { Public declarations } end; var frmCPManage_CX: TfrmCPManage_CX; Mach: array of TfrmSlt; implementation uses U_DataLink,U_Fun,U_FileUp; {$R *.dfm} procedure TfrmCPManage_CX.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; SCreateCDS20(ADOQueryTree20,ADOQueryTree); SInitCDSData20(ADOQueryTree20,ADOQueryTree); cxDBTreeList1.Items[0].Expand(false); //cxDBTreeList1.Items[1].Expand(False); end; procedure TfrmCPManage_CX.InitGrid(); begin Panel2.Visible:=True; Panel2.Refresh; try ADOQueryMain.DisableControls; with ADOQueryMain do begin Filtered:=False; Close; SQL.Clear; SQL.Add('exec P_Select_CP_YDang :Code,:PState,:CYType'); Parameters.ParamByName('Code').Value:=''; Parameters.ParamByName('PState').Value:=0; Parameters.ParamByName('CYType').Value:=Trim(ADOQueryTree.fieldbyname('CPID').AsString); Open; end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); finally ADOQueryMain.EnableControls; end; Panel2.Visible:=False; end; procedure TfrmCPManage_CX.TJGS(); var i,j:Integer; begin i:=0; j:=0; CDS_Main.DisableControls; with CDS_Main do begin first; while not Eof do begin if FieldByName('CYPriceKg').Value=0 then begin i:=i+1; end else begin j:=j+1; end; Next; end; end; CDS_Main.EnableControls; Label11.Caption:='定价样品数量:'+Trim(IntToStr(j)); Label12.Caption:='未定价样品数量:'+Trim(IntToStr(i)); end; procedure TfrmCPManage_CX.FormDestroy(Sender: TObject); begin frmCPManage_CX:=nil; end; procedure TfrmCPManage_CX.FormClose(Sender: TObject; var Action: TCloseAction); var i,j:integer; 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); // writeCxGrid(self.Caption+tv1.Name,tv1); // Application := mainApplication; action:=cafree; end; procedure TfrmCPManage_CX.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 TfrmCPManage_CX.TBDelClick(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; if Application.MessageBox('确定要删除数据吗?','提示',32+4)<>IDYES then Exit; if Trim(CDS_Main.fieldbyname('CYID').AsString)<>'' then begin with ADOQueryCmd do begin Close; SQL.Clear; sql.Add('delete CP_YDang where CYID='''+Trim(CDS_Main.fieldbyname('CYID').AsString)+''''); ExecSQL; end; end; CDS_Main.Delete; end; procedure TfrmCPManage_CX.FormShow(Sender: TObject); begin Panel3.Align:=alclient; InitTree(); ReadCxGrid(self.Caption,Tv1,'样品管理'); with ADOQueryTemp do begin Close; sql.Clear; sql.Add('select CYID='''' '); Open; end; SCreateCDS20(ADOQueryTemp,CDS_CYNO); SInitCDSData20(ADOQueryTemp,CDS_CYNO); with ADOQueryMain do begin Filtered:=False; Close; SQL.Clear; SQL.Add('exec P_Select_CP_YDang :Code,:PState,:CYType'); Parameters.ParamByName('Code').Value:=''; Parameters.ParamByName('PState').Value:=0; Parameters.ParamByName('CYType').Value:='XXXXXXX'; Open; end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); CDS_CYNO.Delete; end; procedure TfrmCPManage_CX.cxDBTreeList1DblClick(Sender: TObject); begin InitGrid(); TJGS(); end; procedure TfrmCPManage_CX.TBAddClick(Sender: TObject); var i:Integer; FieldName:String; begin end; procedure TfrmCPManage_CX.TBRafreshClick(Sender: TObject); begin InitTree(); InitGrid(); TJGS(); end; procedure TfrmCPManage_CX.ToolButton3Click(Sender: TObject); var i:Integer; FieldName:String; begin end; procedure TfrmCPManage_CX.ToolButton2Click(Sender: TObject); begin if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); TJGS(); end; end; procedure TfrmCPManage_CX.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; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); CYID.Text:=''; ADOQueryTree.Locate('CPID',CPID,[]); end; end; procedure TfrmCPManage_CX.CYNoChange(Sender: TObject); begin //if Length(Trim(TEdit(Sender).Text))<4 then Exit; if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); TJGS(); end; end; procedure TfrmCPManage_CX.ToolButton1Click(Sender: TObject); begin if CDS_Main.IsEmpty then Exit; TcxGridToExcel('样品档案1',cxGrid1); end; procedure TfrmCPManage_CX.ToolButton5Click(Sender: TObject); begin try frmFileUp:=TfrmFileUp.Create(Application); with frmFileUp do begin Code.Text:=Trim(Self.CDS_Main.fieldbyname('CYNO').AsString); CYID:=Trim(Self.CDS_Main.fieldbyname('CYID').AsString); if ShowModal=1 then begin Self.InitGrid(); Self.CDS_Main.Locate('CYID',CYID,[]); end; end; finally frmFileUp.Free; end; end; procedure TfrmCPManage_CX.ToolButton6Click(Sender: TObject); var fHandle:THandle; FInt:Integer; FFName,FPath:String; begin {FPath:='C:\HTTP1209\'; if DirectoryExists(ExtractFileDir(FPath)) then winexec('cmd /c rd /s /q C:\HTTP1209',sw_hide);} with ADOQueryTemp do begin close; sql.Clear; sql.Add('select * from XD_File where CYNO='''+Trim(CDS_Main.fieldbyname('CYNO').AsString)+''''); Open; if IsEmpty then begin Application.MessageBox('样品图片未上传!','提示',0); Exit; end; end; try ReadINIFile(); server:=ReadINIFileStr('SYSTEMSET.INI','SERVER','服务器地址','127.0.0.1'); if Length(server)<6 then begin server:='127.0.0.1'; end; IdFTP1.Host :=server;//PicSvr; IdFTP1.Username := 'three'; IdFTP1.Password := '641010'; IdFTP1.Connect(); except IdFTP1.Quit; Application.MessageBox('无法连接到文件服务器,请检查!', '提示', MB_ICONWARNING); Exit; end; FPath:='D:\Right1209\'; if not DirectoryExists(ExtractFileDir(FPath)) then CreateDir(ExtractFileDir(FPath)); FFName:=Trim(ADOQueryTemp.fieldbyname('FileName').AsString); FFName:=FPath+FFName; if FileExists(FFName) then begin FInt:=1; end; if FInt<>1 then IdFTP1.Get('YP\'+Trim(ADOQueryTemp.fieldbyname('FileName').AsString), FPath+Trim(ADOQueryTemp.fieldbyname('FileName').AsString) ); if IdFTP1.Connected then IdFTP1.Quit; ShellExecute(Handle, 'open',PChar(FPath+Trim(ADOQueryTemp.fieldbyname('FileName').AsString)),'', '', SW_SHOWNORMAL); end; procedure TfrmCPManage_CX.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 TfrmCPManage_CX.Tv1CellClick(Sender: TcxCustomGridTableView; ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton; AShift: TShiftState; var AHandled: Boolean); begin if CDS_Main.IsEmpty then Exit; InitImage(); end; procedure TfrmCPManage_CX.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 TfrmCPManage_CX.CYMFChange(Sender: TObject); begin //if Length(Trim(TEdit(Sender).Text))<2 then Exit; if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); TJGS(); end; end; procedure TfrmCPManage_CX.CYNameChange(Sender: TObject); begin //if Length(Trim(TEdit(Sender).Text))<2 then Exit; if ADOQueryMain.Active then begin SDofilter(ADOQueryMain,SGetFilters(Panel1,1,2)); SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); TJGS(); end; end; procedure TfrmCPManage_CX.CYNOKeyPress(Sender: TObject; var Key: Char); begin if Key=#13 then begin if Trim(CYNO.Text)='' then Exit; if Length(Trim(CYNO.Text))<4 then Exit; with ADOQueryMain do begin Close; Filtered:=False; sql.Clear; sql.Add('exec P_Select_CP_YDang :Code,2,'''' '); Parameters.ParamByName('Code').Value:='%'+Trim(CYNO.Text)+'%'; Open; end; SCreateCDS20(ADOQueryMain,CDS_Main); SInitCDSData20(ADOQueryMain,CDS_Main); CYID.Text:=''; ADOQueryTree.Locate('CPID',CPID,[]); TJGS(); end; end; procedure TfrmCPManage_CX.TSelClick(Sender: TObject); begin if CDS_Main.IsEmpty then exit; if CDS_Main.Locate('Ssel',True,[])=False then begin Application.MessageBox('没有选择数据','提示'); exit; end; ModalResult:=1; end; end.