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.