⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit_setuppurmanager.pas

📁 delphi开发的中国移动大客户管理系统,后台数据库为oracle
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Unit_SetupPurManager;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  DBTables, DBCtrls, StdCtrls, Mask, Db, ImgList, ComCtrls, Buttons,
  ExtCtrls, Menus, Grids, DBGrids, TFlatButtonUnit, TFlatComboBoxUnit,crypt,procedurep;

type
  TFrm_SetupPurManager = class(TForm)
    QueryTmp1: TQuery;
    QueryTmp2: TQuery;
    Splitter1: TSplitter;
    Panel1: TPanel;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    QueryTmp3: TQuery;
    ImageList1: TImageList;
    Querytem4: TQuery;
    Query_City: TQuery;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Query1: TQuery;
    DataSource2: TDataSource;
    Query_Pub: TQuery;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel2: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    FlatEdit1: TEdit;
    FlatEdit2: TEdit;
    Pal_button: TPanel;
    BitBtnAdd: TFlatButton;
    BitBtnAlter: TFlatButton;
    BitBtnDel: TFlatButton;
    BitBtnSave: TFlatButton;
    BitBtnCancel: TFlatButton;
    BitBtnClose: TFlatButton;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    TreeView_1: TTreeView;
    TreeView1: TTreeView;
    Splitter2: TSplitter;
    Panel6: TPanel;
    TreeView2: TTreeView;
    Panel7: TPanel;
    TreeView_2: TTreeView;
    UpdateSQL1: TUpdateSQL;
    Query_Tmp: TQuery;
    procedure FormShow(Sender: TObject);

    procedure DBGrid1DragOver(Sender, Source: TObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    procedure Edit6KeyPress(Sender: TObject; var Key: Char);
    procedure Edit4KeyPress(Sender: TObject; var Key: Char);
    procedure N1Click(Sender: TObject);
    procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure TreeView2DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure TreeView2DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Query_PubAfterScroll(DataSet: TDataSet);
    procedure BitBtnCloseClick(Sender: TObject);
    procedure BitBtnAlterClick(Sender: TObject);
    procedure BitBtnDelClick(Sender: TObject);
    procedure BitBtnSaveClick(Sender: TObject);
    procedure BitBtnCancelClick(Sender: TObject);
    procedure BitBtnAddClick(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
  private
    { Private declarations }
    //当前的节日编码
    P_jbdm :string;
    //判断是否为插入状态
    P_Insert :boolean;
    //是否重建树的标志
    P_Refresh :boolean;
    //是否编辑标志
    P_Edit :boolean;

    //删除人员所有权限
    procedure DeleteAllQX(P_jbdm:string);
    procedure InsertAccessMenu(P_jbdm:string;ID:integer);
    procedure Insert_Set_Access_Fun(P_jbdm:string; FUN_ID:integer);
    procedure insert_init_QX;
    procedure clearXH(Tree:TTreeView);
    procedure dgfather_InsertSetAccess(HT2:TTreeNode);
    procedure dgChild_InsertSetAccess(HT2:TTreeNode);
    procedure InitTreeView_QX(TreeView:TTreeView;P_jbdm:string);
    procedure InsertTreeViewMenu(TreeView:TTreeView;P_jbdm:string);
    procedure InsertTreeViewFun(TreeView:TTreeView;P_jbdm:string);
    procedure InsertFun(TreeView:TTreeView;FunLeaf:string;Form_Code:string);
    procedure locateTree(TreeView:TTreeView;Node:TTreeNode);
    procedure dgChild_DeleteAccess(HT1:TTreeNode);
    procedure DeleteAccessmenu(P_jbdm:string;ID:Integer);
    procedure Delete_Set_Access_Fun(P_jbdm:string;ID:integer);
    Function getMenu_ID(FORM_CODE:string):Integer;
  public
    { Public declarations }
    P_jxdm,P_cityno,P_room :string;
    TmpNode:TTreeNode;
  end;

var
  Frm_SetupPurManager: TFrm_SetupPurManager;

implementation
uses Main,unit_public, dmmain;

{$R *.DFM}

procedure TFrm_SetupPurManager.FormShow(Sender: TObject);
begin
  inherited;
  P_Insert :=false;
  PageControl1.ActivePageIndex :=0;
  FlatEdit1.Enabled :=false;
  FlatEdit2.Enabled :=false;
  BitBtnSave.Enabled :=false;
  crypt.UserEnter_Log(Caption,'浏览',-1,P_jbdm,'登入窗体');
  setFunVisible(Self,P_jbdm);
  FormMain.GP_SetButtonPos(Pal_button);
  Query_PUB.close;
  Query_PUB.open;
  //SetBitBtn(true);
  //Query_PUB.AfterScroll(nil);
  //修改部分       2001-07-10         ChenQingBo
  BitBtnAdd.Enabled:=(JBDM<=2);
  BitBtnAlter.Enabled:=(JBDM<=2);
  BitBtnDel.Enabled:=(JBDM<=2);
  //Query_PUBAfterScroll(nil);
  BitBtnAdd.Enabled:=false;
  BitBtnAlter.Enabled:=false;
  BitBtnDel.Enabled:=false;
  P_Refresh :=true;

  P_Edit :=false;
  if JBDM=0
    then InitTreeView_QX(TreeView2,'')      //可分配的权限树
    else InitTreeView_QX(TreeView2,P_jbdm);  //可分配的权限树
  //TreeView2.Items:=TreeView_2.Items;
  //clearXH(TreeView2);
  P_Refresh :=false;
end;

procedure TFrm_SetupPurManager.clearXH(Tree:TTreeView);
var i,m,n:integer;
begin//清除叶子上的序号
  for i:=0 to Tree.Items.Count-1 do
  begin
    m:=Pos('.',Tree.Items[i].Text)+Pos(':',Tree.Items[i].Text)+Pos('*',Tree.Items[i].Text)+1;
    n:=length(Tree.Items[i].Text);
    Tree.Items[i].Text:=copy(Tree.Items[i].Text,m,n);
  end;{for}
end;




procedure TFrm_SetupPurManager.insert_init_QX;
begin//设置初始权限
  with QueryTmp2 do
    begin
      close;
      sql.clear;
      sql.add('select INITID,OBJECT');
      sql.add('  from t_d_init');
      sql.add(' where (LEVEL_SEQ=:nJBDM)');
      ParamByName('nJBDM').AsInteger:=100;
      open;
    end;{with}
  while not QueryTmp2.eof do
    begin
      if QueryTmp2.fields[1].AsString='菜单' then
        insertaccessmenu('',QueryTmp2.fields[0].AsInteger);
      if QueryTmp2.fields[1].AsString='功能' then
        Insert_Set_Access_Fun('',QueryTmp2.fields[0].AsInteger);
      QueryTmp2.next;
    end;{while}
end;

procedure TFrm_SetupPurManager.insertaccessmenu(P_jbdm:string;ID:integer);
var
  str :string;
begin
  with QueryTmp1 do
  begin
    close;
    sql.clear;
    sql.add('select count(*)');
    sql.add('  from t_d_init');
    sql.add(' where (LEVEL_SEQ=:sTmp1)');
    sql.add('   and (OBJECT=:nTmp2)');
    ParamByName('sTmp1').AsString:=P_jbdm;
    ParamByName('nTmp2').AsInteger:=ID;
    open;
    if Fields[0].AsInteger>=1 then exit;
  end;
  try
    Dm_Main.Databasedh.StartTransaction;
    with QueryTmp1 do
    begin
      close;
      sql.clear;
      str :='insert into t_d_init(LEVEL_SEQ,INITID,OBJECT) values(:P_jbdm,SEQ_INITID.nextval,:ID)';
      QueryTmp1.sql.Text :=str;
      ParamByName('P_jbdm').AsString:=P_jbdm;
      ParamByName('ID').Asinteger :=ID;
      execsql;
    end;
    Dm_Main.Databasedh.Commit;
  except
    Dm_Main.Databasedh.Rollback;
    Application.MessageBox('系统在执行过程中发生错误!','提示',MB_ICONINFORMATION);
    exit;
  end;
end;

procedure TFrm_SetupPurManager.Insert_Set_Access_Fun(P_jbdm:string; FUN_ID:integer);
begin
  with QueryTmp1 do
  begin
    close;
    sql.clear;
    sql.add('select count(*) from t_d_fungrant');
    sql.add(' where (WK_NO=:P_jbdm)');
    sql.add('   and (FUN_ID=:FUN_ID)');
    ParamByName('P_jbdm').AsString:=P_jbdm;
    ParamByName('FUN_ID').AsInteger:=FUN_ID;
    open;
    if Fields[0].AsInteger>0 then exit;
  end;
  try
    Dm_Main.Databasedh.StartTransaction;
    with QueryTmp1 do
    begin
      close;
      sql.clear;
      sql.add('insert into t_d_fungrant');
      sql.add('       (WK_NO,ID,FUN_ID)');
      sql.add('values (:P_jbdm,SEQ_FUNGRANT_ID.nextval,:FUN_ID)');
      ParamByName('P_jbdm').AsString:=P_jbdm;
      ParamByName('FUN_ID').AsInteger:=FUN_ID;
      execsql;
    end;
    Dm_Main.Databasedh.Commit;
  except
    Dm_Main.Databasedh.Rollback;
    Application.MessageBox('系统在执行过程中发生错误!','提示',MB_ICONINFORMATION);
    exit;
  end;
end;

procedure TFrm_SetupPurManager.DBGrid1DragOver(Sender, Source: TObject;
  X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := Source is TDBGrid;
end;

procedure TFrm_SetupPurManager.Edit6KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8,#13]) then
    key:=#0;
end;

procedure TFrm_SetupPurManager.Edit4KeyPress(Sender: TObject; var Key: Char);
begin
  if not (key in ['0'..'9',#8,#13,#189]) then
    key:=#0;
end;

procedure TFrm_SetupPurManager.DeleteAllQX(P_jbdm:string);
begin//删除这一工号的所有权限
  with QueryTmp1 do
  begin  //删除功能
    close;
    sql.clear;
    sql.add('delete t_d_menugrant');
    sql.add(' where (WK_NO=:P_jbdm)');
    ParamByName('P_jbdm').ASString:=P_jbdm;
    execsql;
  end;
  with QueryTmp1 do
  begin  //删除功能
    close;
    sql.clear;
    sql.add('delete t_d_fungrant');
    sql.add(' where (WK_NO=:P_jbdm)');
    ParamByName('P_jbdm').ASString:=P_jbdm;
    execsql;
  end;
end;

procedure TFrm_SetupPurManager.N1Click(Sender: TObject);
begin
  if JBDM<>0 then
  begin
    Application.MessageBox('对不起,只有系统管理员才可做这项操作!','错误',MB_OK);
    exit;
  end;
end;

procedure TFrm_SetupPurManager.dgfather_InsertSetAccess(HT2:TTreeNode);
var HTTmp:TTreeNode;
    QX_ID:Integer;
begin//递归插入权限设置
  HTTmp:=HT2.Parent;
  if HTTmp<>nil then dgfather_InsertSetAccess(HTTmp);
  if pos(':',HT2.text)<>0 then exit;
  if pos('.',HT2.text)<>0 then
  begin
    QX_ID:=StrToInt(copy(HT2.text,1,pos('.',HT2.text)-1));
    insertaccessmenu(P_jbdm,QX_ID);
  end
  else
  begin
    //QX_ID:=StrToInt(copy(HT2.text,1,pos('*',HT2.text)-1));
    //Insert_Set_Access_Fun(P_jbdm,QX_ID);
  end;
end;

procedure TFrm_SetupPurManager.dgChild_InsertSetAccess(HT2:TTreeNode);
var HTTmp:TTreeNode;
    QX_ID:Integer;
begin//递归孩子
  if pos(':',HT2.text)=0 then
  begin
    if pos('.',HT2.text)<>0 then
    begin
      QX_ID:=StrToInt(copy(HT2.text,1,pos('.',HT2.text)-1));
      insertaccessmenu(P_jbdm,QX_ID);
    end
    else
    begin
      QX_ID:=StrToInt(copy(HT2.text,1,pos('*',HT2.text)-1));
      Insert_Set_Access_Fun(P_jbdm,QX_ID);
    end;
  end;
  HTTmp:=HT2.getFirstChild;
  while HTTmp<>nil do
  begin
    dgChild_InsertSetAccess(HTTmp);
    HTTmp:=HT2.GetNextChild(HTTmp);
  end;{while}
end;

procedure TFrm_SetupPurManager.InsertTreeViewMenu(TreeView:TTreeView;P_jbdm:string);
var Node:TTreeNode;
    i:integer;
    str :string;
begin//插入有权限的菜单
  with QueryTmp1 do
  begin
    close;
    sql.clear;
    if P_jbdm<>'' then
    begin
      str :='select to_Char(a.ID)||''.''||a.Menu_Name,a.UP_MENU_NO '+
        '  from t_d_menuset a,t_d_init b'
      +' where to_Char(a.ID)=b.OBJECT'+
      '   and b.LEVEL_SEQ=:P_jbdm'+
      ' order by a.ID';
      QueryTmp1.sql.Text :=str;
      ParamByName('P_jbdm').AsString:=P_jbdm;
    end
    else
    begin
      sql.add('select to_Char(ID)||''.''||Menu_Name,UP_MENU_NO ');
      sql.add('  from t_d_menuset');
      sql.add(' order by ID');
    end;
    open;
    while not eof do
    begin
      Node:=Nil;
      for i:=0 to TreeView.Items.Count-1 do
      begin
        if copy(TreeView.Items[i].Text,1,Pos('.',TreeView.Items[i].Text))=Fields[1].ASString+'.' then
        begin
          Node:=TreeView.Items[i];
          break;
        end;{if}
      end;{for}
      Node:=TreeView.Items.AddChild(Node,QueryTmp1.Fields[0].AsString);
      Node.ImageIndex:=0;
      Node.SelectedIndex:=1;
      next;
    end;{while}
  end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -