unit U_UserHelp; 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, cxLookAndFeels, cxLookAndFeelPainters, cxTLdxBarBuiltInMenu, cxNavigator, dxDateRanges, System.ImageList; type TfrmUserHelp = 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; ThreeImgList: TImageList; 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 frmUserHelp: TfrmUserHelp; implementation uses U_DataLink; {$R *.dfm} /////////////////////////////////////////////////////////// //////功能:过滤数据 /////////////////////////////////////////////////////////// procedure TfrmUserHelp.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 userID like '+quotedstr('%'+trim(strcode)+'%'); if trim(strname)<>'' then filterStr:=filterStr+' and userName 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 TfrmUserHelp.InitTree(); var strsql,strwhere:string; begin strsql:=' SELECT distinct UDept=''ALL'',UDeptTop='''',UDeptName=''所有部门'',Framelevel=0 '+ ' union '+ ' SELECT distinct UDept,UDeptTop=''ALL'',UDept,Framelevel=1 '+ ' FROM BD_staff A '+ ' WHERE USERID<>''ADMIN'' and ISNULL(UDept,'''')<>'''' '; strwhere:=' where A.Valid=''Y'' '; { if fIsYwy then strwhere:=strwhere+' and A.YWYFlag=''Y'' '; if trim(fFrameNo)<>'' then strwhere:=strwhere+' and A.dept='+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 TfrmUserHelp.FormShow(Sender: TObject); begin InitTree(); end; procedure TfrmUserHelp.FormCreate(Sender: TObject); begin cxGrid1.Align :=alclient; with ADOConnection1 do begin Connected:=false; ConnectionString:=DConString; Connected:=true; end; end; ////////////////////////////////////////////////// // ////////////////////////////////////////////////// procedure TfrmUserHelp.DoQuery(); var strsql,strwhere:string; begin strsql:=' select * '+ ' from BD_staff A '+ ' where isnull(UserID,'''')<>''ADMIN'' '; strwhere:=' and A.Valid=''Y'' '; if fIsYwy then strwhere:=strwhere+' and A.Isywy=1 '; strsql:=strsql+ strwhere +' order by A.userID '; with ADOQueryHelp do begin close; sql.Clear ; sql.Add( strsql); Open; end; end; procedure TfrmUserHelp.TBCloseClick(Sender: TObject); begin close; end; procedure TfrmUserHelp.TOkClick(Sender: TObject); begin if ADOQueryHelp.IsEmpty then begin ModalResult:=-1 end else ModalResult:=1; end; procedure TfrmUserHelp.tv1DblClick(Sender: TObject); begin Tok.Click ; end; procedure TfrmUserHelp.Edt_nameChange(Sender: TObject); begin FilterData('',edt_code.Text,Edt_name.Text); end; procedure TfrmUserHelp.cxDBTreeList1Click(Sender: TObject); begin if ADOQueryDept.IsEmpty then exit; if trim(ADOQueryDept.FieldByName('Framelevel').AsString)='0' then FilterData('','','') else FilterData(ADOQueryDept.FieldByName('UDept').AsString,'',''); end; end.