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

📄 rgtrolefunction.pas

📁 一个不错的源程序DELPHI开发的,功能比较好的客户管理系统
💻 PAS
📖 第 1 页 / 共 3 页
字号:
//------------------------------------------------------------
//      作者:曾庆顺
//      模块:角色功能对照及个人功能对照窗口
//      时间:2002.09.21
//      功能介绍:
//-----------------------------------------------------------
unit RgtRoleFunction;

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
  TRgtFrmRoleFunction = class(TForm)
    Panel1: TPanel;
    DataSource_Pub: TDataSource;
    Query_Pub: TQuery;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Pal_button: TPanel;
    BitBtnAdd: TFlatButton;
    BitBtnAlter: TFlatButton;
    BitBtnDel: TFlatButton;
    BitBtnSave: TFlatButton;
    BitBtnCancel: TFlatButton;
    BitBtnClose: TFlatButton;
    TabSheet2: TTabSheet;
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    Splitter1: TSplitter;
    Panel3: TPanel;
    DbgPrivFunction: TDBGrid;
    DataSource1: TDataSource;
    Query1: TQuery;
    Splitter3: TSplitter;
    Panel4: TPanel;
    Label12: TLabel;
    EdtFuncSerialIdEditing: TEdit;
    GroupBox1: TGroupBox;
    Label2: TLabel;
    Label1: TLabel;
    EdtFormCaptionEditing: TEdit;
    EdtControlCaptionEditing: TEdit;
    SbSysFormCtrlListEditing: TBitBtn;
    Label15: TLabel;
    EdtFuncNameEditing: TEdit;
    Label11: TLabel;
    Edit1: TEdit;
    UpdateSQL1: TUpdateSQL;
    Query_Tmp: TQuery;
    Query1SERIAL: TFloatField;
    Query1ROLEID: TFloatField;
    Query1FUNCID: TStringField;
    Query1ROLENAME: TStringField;
    Query1FUNCNAME: TStringField;
    Query1FUNCSERIALID: TFloatField;
    Query1CONTROLTYPE: TStringField;
    Query1TYPE: TStringField;
    TreeViewRy: TTreeView;
    Splitter2: TSplitter;
    Panel5: TPanel;
    Splitter4: TSplitter;
    DBGrid2: TDBGrid;
    Panel6: TPanel;
    Label3: TLabel;
    Edit2: TEdit;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Edit3: TEdit;
    Edit4: TEdit;
    BitBtn1: TBitBtn;
    Edit5: TEdit;
    Edit6: TEdit;
    QueryTmp1: TQuery;
    QueryTmp2: TQuery;
    ImageList1: TImageList;
    Query2: TQuery;
    FloatField1: TFloatField;
    StringField1: TStringField;
    StringField3: TStringField;
    FloatField3: TFloatField;
    StringField4: TStringField;
    StringField5: TStringField;
    DataSource2: TDataSource;
    UpdateSQL2: TUpdateSQL;
    Query2USERLOGINID: TStringField;
    Query2USERLOGINIDNAME: TStringField;
    Query2FLAG: TStringField;
    Query2flagname: TStringField;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    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 FlatEdit1KeyPress(Sender: TObject; var Key: Char);
    procedure PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    procedure SbSysFormCtrlListEditingClick(Sender: TObject);
    procedure Query_PubAfterScroll(DataSet: TDataSet);
    procedure Query1AfterScroll(DataSet: TDataSet);
    procedure Query1CalcFields(DataSet: TDataSet);
    procedure TreeViewRyExpanding(Sender: TObject; Node: TTreeNode;
      var AllowExpansion: Boolean);
    procedure FormDestroy(Sender: TObject);
    procedure Query2AfterScroll(DataSet: TDataSet);
    procedure TreeViewRyChange(Sender: TObject; Node: TTreeNode);
    procedure BitBtn1Click(Sender: TObject);
    procedure Query2CalcFields(DataSet: TDataSet);
  private
    { Private declarations }
    P_FUNCID,P_FUNCID1,P_FUNCSERIALID,P_FUNCSERIALID1,P_CurrentCode,P_CurrentCode1 :string;
    //判断是否为插入状态
    P_Insert,P_Insert1,P_Save :boolean;
    //是否编辑标志
    P_Edit,P_Edit1 :boolean;
    //是否重建树的标志
    P_Refresh :boolean;
    //建树的第一层
    procedure InitTreeViewRY;
  public
    { Public declarations }
    P_jxdm,P_cityno,P_room :string;
    //*********************曾庆顺********************************
    //释放节点
    procedure FreeNode(treeview :TTreeview);
    //插入节点
    //不展开树
    Function InsertTreeNode(treeview :TTreeview;SNode:TTreeNode;
         pLabel:string;pData:string):TTreeNode;
    //树展开时临时地加上该城市下局向的用户
    ProceDure TreeExpand(Treeview :TTreeview;SNode:TTreeNode);
    //***********************************************************
  end;

var
  RgtFrmRoleFunction: TRgtFrmRoleFunction;

implementation
uses Main,unit_public, dmmain,RgtSelectUnitFunctionSelect;

{$R *.DFM}

procedure TRgtFrmRoleFunction.FormShow(Sender: TObject);
begin
  inherited;
  P_Insert :=false;
  P_Insert1 :=false;
  P_Save :=false;
  P_edit :=false;
  PageControl1.ActivePageIndex :=0;
  query_pub.close;
  query_pub.open;
  if query_pub.bof and query_pub.eof then
  Query_PubAfterScroll(nil);
  //
  P_Refresh :=true;
  TreeViewRy.Items.clear;
  InitTreeViewRY;      //初始化人员树
  P_Refresh :=false;
end;

procedure TRgtFrmRoleFunction.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := CaFree;
end;
procedure TRgtFrmRoleFunction.BitBtnCloseClick(Sender: TObject);
begin
  close;
end;

procedure TRgtFrmRoleFunction.BitBtnAlterClick(Sender: TObject);
begin
  case PageControl1.ActivePageIndex of
  0:begin
      if query_pub.bof and query_pub.eof then exit;
      SbSysFormCtrlListEditing.Enabled :=true;
      BitBtnSave.Enabled               :=true;
      P_Insert                         :=false;
    end;
  1:begin
      if TreeViewRy.Selected=nil then exit;
      if TreeViewRy.Selected.Level<3 then exit;
      BitBtn1.Enabled                  :=true;
      BitBtnSave.Enabled               :=true;
      P_Insert1                        :=false;
    end;
  end;
  P_Save :=true;
end;

procedure TRgtFrmRoleFunction.BitBtnDelClick(Sender: TObject);
var
  sqlstr :string;
begin
  case PageControl1.ActivePageIndex of
  0:begin
      if query_pub.bof and query_pub.eof then exit;
      if MessageDlg('是否要删除该记录?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then  exit;

      sqlstr:='Delete PRIVROLEFUNC where SERIAL='+
      #39+EdtFuncSerialIdEditing.text+#39;
      if AnalyzeSql(sqlstr)=1 then exit;
      Query1.Delete;
      Query1.AfterScroll(nil);
    end;
  1:begin
      if TreeViewRy.Selected=nil then exit;
      if TreeViewRy.Selected.Level<3 then exit;
      if MessageDlg('是否要删除该记录?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then  exit;

      sqlstr:='Delete PRIVUSERFUNC where SERIAL='+
      #39+Edit2.text+#39;
      if AnalyzeSql(sqlstr)=1 then exit;
      Query2.Delete;
      Query2.AfterScroll(nil);
    end;
  end;
end;

procedure TRgtFrmRoleFunction.BitBtnSaveClick(Sender: TObject);
var
  sqlstr,str : string;
begin
  case PageControl1.ActivePageIndex of
  0:begin
      if query_pub.bof and query_pub.eof then exit;
      //提示是否更新
      if P_Insert=false then
      if MessageDlg('是否要更新该记录?',mtConfirmation, [mbYes,mbNo], 0)=mrNo then  exit;

      if trim(P_FUNCSERIALID) ='' then
      begin
        MessageDlg('请选择权限功能!',mtConfirmation, [mbYes], 0);
        exit;
      end;
      //该角色的这种功能已经存在不要再增加
      if P_Insert then
      begin
        Query_Tmp.Close;
        Query_Tmp.sql.text :=
        'select count(*) from PRIVROLEFUNC where FUNCSERIALID='+#39
        +P_FUNCSERIALID+#39+' and ROLEID='
                     +Query_Pub.fieldbyname('ROLEID').asstring;

        Query_Tmp.open;

        if Query_Tmp.Fields[0].AsInteger >0 then
        begin
          Application.MessageBox('该角色的这种功能已存在!请重新选择对应!','提示',MB_OK+MB_ICONWARNING);
          Exit;
        end;
      end;

      //**********************************************
      if P_Insert then
      Begin
         sqlstr:='insert into PRIVROLEFUNC (SERIAL,ROLEID,FUNCID,ROLENAME,FUNCNAME,FUNCSERIALID) '
         +' values(SEQ_ROLEFUNCSERIAL.nextval,'
         +query_pub.fieldbyname('ROLEID').asstring
         +','+#39+P_FUNCID+#39+','
         +#39+query_pub.fieldbyname('ROLENAME').asstring+#39+','
         +#39+EdtFuncNameEditing.Text+#39+','+P_FUNCSERIALID+')';
         if AnalyzeSql(sqlstr)=1 then exit;
      end
      else
         begin
           sqlstr:='update PRIVROLEFUNC set FUNCID='+#39+P_FUNCID+#39
           +',FUNCNAME='+#39+EdtFuncNameEditing.Text+#39
           +',FUNCSERIALID='+P_FUNCSERIALID
           +' where SERIAL='+query1.fieldbyname('SERIAL').asstring;
       
           if AnalyzeSql(sqlstr)=1 then exit;
         end;

      //*************数据同步********************
      if P_Insert then
      Begin
        P_edit :=true;
        Query1.insert;
        Query_Tmp.close;
        Query_Tmp.sql.text :=
         'select nvl(max(SERIAL),0) from PRIVROLEFUNC ';
        Query_Tmp.open;
        P_CurrentCode :=Query_Tmp.fields[0].asstring;
      end
      else
         begin
           P_edit :=true;
           Query1.Edit;
         end;
      Query1.FieldByName('SERIAL').AsString :=P_CurrentCode;
      Query1.FieldByName('ROLEID').AsString :=query_pub.fieldbyname('ROLEID').asstring;
      Query1.FieldByName('FUNCID').AsString :=P_FUNCID;
      Query1.FieldByName('ROLENAME').AsString :=query_pub.fieldbyname('ROLENAME').asstring;
      Query1.FieldByName('FUNCNAME').AsString :=EdtFuncNameEditing.text;
      Query1.FieldByName('FUNCSERIALID').AsString :=P_FUNCSERIALID;
      if Edit1.text ='看不见' then
      query1.fieldbyname('CONTROLTYPE').asstring :='INVISIBLE';
      if Edit1.text ='不可编辑' then
      query1.fieldbyname('CONTROLTYPE').asstring :='DISABLED';
      P_edit :=false;
      Query1.Post;
      //*****************************************
      Query1.AfterScroll(nil);
    end;
  1:begin
      if TreeViewRy.Selected=nil then exit;
      if TreeViewRy.Selected.Level<3 then exit;

      //提示是否更新

⌨️ 快捷键说明

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