unit U_StuffHelp; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, cxFilter, cxData, cxDataStorage, cxEdit, DB, cxDBData, StdCtrls, cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxControls, cxGridCustomView, cxGrid, cxInplaceContainer, cxDBTL, cxTLData, ComCtrls, ToolWin, ADODB, ImgList,StrUtils, ExtCtrls; type TfrmStuffHelp = class(TForm) ToolBar2: TToolBar; TOk: TToolButton; TBClose: TToolButton; cxDBTreeList1: TcxDBTreeList; cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn; cxGrid1: TcxGrid; tv1: TcxGridDBTableView; tv1Code: TcxGridDBColumn; tv1Name: TcxGridDBColumn; DBGrid1Level1: TcxGridLevel; GroupBox1: TGroupBox; ADOQueryDept: TADOQuery; DataSource1: TDataSource; ADOConnection1: TADOConnection; tv1Column1: TcxGridDBColumn; cxStyleRepository1: TcxStyleRepository; cxStyle1: TcxStyle; cxStyle2: TcxStyle; cxStyle_gridRow: TcxStyle; cxStyle_gridFoot: TcxStyle; cxStyle_gridHead: TcxStyle; cxStyle_gridGroupBox: TcxStyle; cxStyle_yellow: TcxStyle; cxStyle_Red: TcxStyle; ADOQueryHelp: TADOQuery; DataSource2: TDataSource; Label1: TLabel; Edt_name: TEdit; ImageList1: TImageList; cxStyleTree: TcxStyle; Label2: TLabel; Edt_Code: TEdit; Splitter1: TSplitter; procedure FormShow(Sender: TObject); procedure FormCreate(Sender: TObject); procedure TBCloseClick(Sender: TObject); procedure TOkClick(Sender: TObject); procedure tv1DblClick(Sender: TObject); procedure Edt_nameChange(Sender: TObject); procedure cxDBTreeList1Click(Sender: TObject); private procedure InitTree(); procedure DoQuery(); procedure FilterData(strdepotno,strcode,strname:string); public fFrameNo:string; fFrameName:string; fIsYwy:boolean; end; var frmStuffHelp: TfrmStuffHelp; implementation uses U_global; {$R *.dfm} /////////////////////////////////////////////////////////// //////功能:过滤数据 /////////////////////////////////////////////////////////// procedure TfrmStuffHelp.FilterData(strdepotno,strcode,strname:string); var filterStr:string; begin filterStr:=''; if trim(strdepotno)<>'' then filterStr:=filterStr+' and dept like '+quotedstr('%'+trim(strdepotno)+'%'); if trim(strcode)<>'' then filterStr:=filterStr+' and code like '+quotedstr('%'+trim(strcode)+'%'); if trim(strname)<>'' then filterStr:=filterStr+' and name like '+quotedstr('%'+trim(strname)+'%'); try ADOQueryHelp.DisableControls ; if trim(filterStr)='' then begin ADOQueryHelp.Filtered:=false; ADOQueryHelp.EnableControls; exit; end; filterStr:=trim(RightBStr(filterStr,length(filterStr)-5)); // showmessage(filterStr); with ADOQueryHelp do begin filtered:=false; filter:=filterStr; filtered:=true; end; finally ADOQueryHelp.EnableControls; end; end; ////////////////////////////////////////////////////// procedure TfrmStuffHelp.InitTree(); var strsql,strwhere:string; begin strsql:=' SELECT distinct frameNo,frameTop,frameName,Framelevel '+ ' from YC_frame '+ ' where Framelevel=''0'' and Valid=''Y'' '+ ' union '+ ' SELECT distinct B.frameNo,B.frameTop,B.frameName,Framelevel '+ ' FROM YC_stuff A '+ ' INNER JOIN YC_frame B on A.dept=B.frameNo and B.Valid=''Y'' '; strwhere:=' where A.Valid=''Y'' '; if fIsYwy then strwhere:=strwhere+' and A.YWYFlag=''Y'' '; if trim(fFrameNo)<>'' then strwhere:=strwhere+' and A.dept like '+quotedstr(trim(fFrameNo)+'%'); if trim(fFrameName)<>'' then strwhere:=strwhere+' and B.frameName like '+quotedstr('%'+trim(fFrameName)+'%'); strsql:=strsql+ strwhere; with ADOQueryDept do begin close; sql.Clear ; sql.Add( strsql); Open; end; cxDBTreeList1.FullExpand; DoQuery(); end; procedure TfrmStuffHelp.FormShow(Sender: TObject); begin InitTree(); end; procedure TfrmStuffHelp.FormCreate(Sender: TObject); begin cxGrid1.Align :=alclient; with ADOConnection1 do begin Connected:=false; ConnectionString:=gConString; Connected:=true; end; end; ////////////////////////////////////////////////// // ////////////////////////////////////////////////// procedure TfrmStuffHelp.DoQuery(); var strsql,strwhere:string; begin strsql:=' select A.code,A.Name,A.dept,A.ywyflag,A.Duties,Case A.Sex when ''F'' then ''女'' else ''男'' end as Sex,A.Intime '+ ' from YC_stuff A '; strwhere:=' where A.Valid=''Y'' '; if fIsYwy then strwhere:=strwhere+' and A.YWYFlag=''Y'' '; if trim(fFrameNo)<>'' then strwhere:=strwhere+' and A.dept like '+quotedstr(trim(fFrameNo)+'%'); strsql:=strsql+ strwhere +' order by A.Code '; with ADOQueryHelp do begin close; sql.Clear ; sql.Add( strsql); Open; end; end; procedure TfrmStuffHelp.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmStuffHelp.TOkClick(Sender: TObject); begin if ADOQueryHelp.IsEmpty then begin ModalResult:=-1 end else ModalResult:=1; end; procedure TfrmStuffHelp.tv1DblClick(Sender: TObject); begin Tok.Click ; end; procedure TfrmStuffHelp.Edt_nameChange(Sender: TObject); begin FilterData('',edt_code.Text,Edt_name.Text); end; procedure TfrmStuffHelp.cxDBTreeList1Click(Sender: TObject); begin if ADOQueryDept.IsEmpty then exit; if trim(ADOQueryDept.FieldByName('Framelevel').AsString)='0' then FilterData('','','') else FilterData(ADOQueryDept.FieldByName('Frameno').AsString,'',''); end; end.