unit U_UserHelp_Dx;

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, DBClient;

type
  TfrmUserHelp_Dx = class(TForm)
    ToolBar2: TToolBar;
    TOk: TToolButton;
    TBClose: TToolButton;
    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;
    ThreeImgList: TImageList;
    cxGrid2: TcxGrid;
    Tv2: TcxGridDBTableView;
    cxGridDBColumn1: TcxGridDBColumn;
    cxGridDBColumn2: TcxGridDBColumn;
    cxGridDBColumn3: TcxGridDBColumn;
    cxGridLevel1: TcxGridLevel;
    GroupBox2: TGroupBox;
    CDS_sel: TClientDataSet;
    DataSourceSel: TDataSource;
    cxDBTreeList1: TcxDBTreeList;
    cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn;
    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);
    procedure Tv2DblClick(Sender: TObject);
  private
    procedure InitTree();
    procedure DoQuery();
    procedure FilterData(strdepotno,strcode,strname:string);
  public
    fFrameNo:string;
    fFrameName:string;
    fIsYwy:boolean;
  end;

var
  frmUserHelp_Dx: TfrmUserHelp_Dx;

implementation
uses
  U_DataLink,U_Fun10;
{$R *.dfm}
///////////////////////////////////////////////////////////
//////功能：过滤数据
///////////////////////////////////////////////////////////
procedure TfrmUserHelp_Dx.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_Dx.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_Dx.FormShow(Sender: TObject);
begin
  InitTree();
end;

procedure TfrmUserHelp_Dx.FormCreate(Sender: TObject);
begin
  GroupBox2.Align :=alclient;
  with ADOConnection1 do
  begin
    Connected:=false;
    ConnectionString:=DConString;
    Connected:=true;
  end;
end;
//////////////////////////////////////////////////
  //
//////////////////////////////////////////////////
procedure TfrmUserHelp_Dx.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;

  sCreateCDS20(ADOQueryHelp,cds_sel);
end;

procedure TfrmUserHelp_Dx.TBCloseClick(Sender: TObject);
begin
  close;
end;

procedure TfrmUserHelp_Dx.TOkClick(Sender: TObject);
begin
  if ADOQueryHelp.IsEmpty then
  begin
    ModalResult:=-1
  end
  else
    ModalResult:=1;
end;

procedure TfrmUserHelp_Dx.tv1DblClick(Sender: TObject);
var
  i:integer;
begin
  if  ADOQueryHelp.IsEmpty then exit;

  if CDS_Sel.Locate('userID',trim(adoqueryHelp.fieldbyname('userID').AsString),[]) then exit;
  with CDS_Sel do
  begin
    CDS_Sel.append;
    for i:=0 to ADOQueryHelp.FieldCount-1 do
    begin
      fields[i].Value:=ADOQueryHelp.Fields[i].Value;
    end;
    CDS_Sel.Post;
  end;
end;

procedure TfrmUserHelp_Dx.Edt_nameChange(Sender: TObject);
begin
  FilterData('',edt_code.Text,Edt_name.Text);
end;

procedure TfrmUserHelp_Dx.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;

procedure TfrmUserHelp_Dx.Tv2DblClick(Sender: TObject);
begin
  IF cds_sel.IsEmpty then exit;
  cds_sel.Delete;
end;

end.
