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

📄 right.cpp

📁 邮 电 公 司 erp源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//Name       :ResetTreeImage
//Function   :重置树中各节点的图标为缺省值
//input      : 要重置的Tree
//output     : 无
//Return     : 无
//-----------------------------------------------------
void __fastcall TfrmRight::ResetTreeImage(TTreeView *tv)
{
      for(int i=0;i<tv->Items->Count;i++)
      {
        tv->Items->Item[i]->StateIndex=-1;
        tv->Items->Item[i]->SelectedIndex=-1;
        //初始化图标置空
      }
      tv->Repaint();
}
 //---------------------------------------------------
 //Name       : InitUsrRight
 //Function   : 根据选择的用户来在权限树上显示该用户对各模块具有的权限
 //input      : UserNode 要初始化的用户或用户组结点
 //output     : 无
 //Return     : 无
 //-----------------------------------------------------
void __fastcall TfrmRight::InitUserRight(TTreeNode *UserNode)
{
    AnsiString sRightModuleCode,sCon,sUserCode,sSQL;
    int iRightLevel;
    TTreeNode * RootNode;
    TComResultSet *pResultSet=NewResultSet();
    //初始化权限数
    RootNode=tvRight->Items->Item[0];
    RootNode->Expand(false);
    sUserCode=GetCodeFromNode(UserNode->Text);//获得用户代码
    //选出该用户或用户组具有的所有的功能模块权限
    if (UserNode->Level == 1)
    sCon=" RightUnitType = 2 and "; //用户组
    else
    sCon=" RightUnitType = 1 and "; //用户
    sCon=sCon+" RightUnitCode='"+sUserCode+"'";
    sSQL="Select * From sdRight where "+sCon;
    try
    {
       pResultSet->Close();
       pResultSet->Open(sSQL,"");
       pResultSet->MoveFirst();
       while(!pResultSet->Eof)
       {
             sRightModuleCode=pResultSet->FieldByName("RightModuleCode");//功能模块代码
             iRightLevel=StrToInt(pResultSet->FieldByName("RightLevel"));  //对该功能模块具有的权限
             if (iRightLevel==0)  //权限为空
             {
                pResultSet->MoveNext();
                continue;
             }
            InitModuleRight(sRightModuleCode,iRightLevel); //设置该模块的权限
            pResultSet->MoveNext();
      }  //end while
//      pResultSet->MoveFirst();
      tvRight->Repaint();
    }
    __finally
    {
      delete pResultSet;
    }
}

//---------------------------------------------------
//Name       : InitModuleRight
//Function   : 显示用户对指定功能模块所具有的权限
//input      : ModuleNode 功能模块代码 iRl有设置的权限码
//output     : 无
//Return     : 无
//-----------------------------------------------------
void __fastcall TfrmRight::InitModuleRight(AnsiString sModuleCodeText,int iRl)
{
        TTreeNode *Node;
        for (int i=0;i<tvRight->Items->Count;i++)
        {
                Node=tvRight->Items->Item[i];
                if (GetCodeFromNode(Node->Text)==sModuleCodeText)
                //初始化该功能模块的权限
                {
                   if (!Node->IsVisible)
                     Node->MakeVisible();
                   SetNodeState(Node,iRl);
                   UpdateChild(Node);
                   UpdateParent(Node);
                }
        } //end for

}
//---------------------------------------------------
//Name       :ResetModuleRight
//Function   :将指定模块接点下的权限全部置为未授权状态
//input      : ModuleNode 功能模块接点
//output     : 无
//Return     :
//-----------------------------------------------------
void __fastcall TfrmRight::ResetModuleRight(TTreeNode *ModuleNode)
{
       for(int i=0;i<ModuleNode->Count;i++)
       {
        SetNodeState(ModuleNode->Item[i],-1);
       }
}
//---------------------------------------------------------------------------//////////////////////
void __fastcall TfrmRight::FormShow(TObject *Sender)
{
       InitPara();
       ReadUserGroupToTree(tvUserInfo);
       ReadUserToTree(tvUserInfo);
       ReadModuleRightToTree(tvRight);
       ResetTreeImage(tvRight);
       RefreshRight=true; 
}
//---------------------------------------------------------------------------//////////////////////
//初试化弹出式菜单  //
//////////////////////
void __fastcall TfrmRight::InitPopup(TTreeNode *SelectNode)
{
 if (SelectNode == NULL) return;
 switch(SelectNode->StateIndex)
 {
 case -1:
  N10->Checked=true;N5->Checked=true;
  break;
 case 1:
  N1->Checked=true;N8->Checked=true;
  break;
 case 2:
  N2->Checked=true;N9->Checked=true;
  break;
 case 3:
  N6->Checked=true;N11->Checked=true;
  break;
 default:
  N7->Checked=true;N12->Checked=true;
 }
}
/////////////////////////////
//点击弹出式菜单,设置权限 //
/////////////////////////////
//---------------------------------------------------------------------------
void __fastcall TfrmRight::AfterPopup(TObject *Sender)
{
 TMenuItem * myItem;
 if ((tvUserInfo->Selected == NULL) ||(tvUserInfo->Selected->Level == 0))
  { return;}
 myItem=(TMenuItem*)Sender;
 if (!myItem->Checked)
  myItem->Checked=!myItem->Checked;
 if (ItemImageIndex[myItem->MenuIndex] != tvRight->Selected->StateIndex)
 {
   if (!RightChanged)
    RightChanged=true;  //用户权限已改变
   SetNodeState(tvRight->Selected,
                ItemRightLevel[myItem->MenuIndex]);
   UpdateChild(tvRight->Selected);
   UpdateParent(tvRight->Selected);
   tvRight->Repaint();
  }
}
//////////////////////////////////////////////
//将当前节点下的所有子节点权限与当前节点一致//
//////////////////////////////////////////////
//---------------------------------------------------------------------------
void __fastcall TfrmRight::UpdateChild(TTreeNode *SelectNode)
{
  if (SelectNode->Count <= 0)
   return ;
  else
  {
   for(int i=0;i<SelectNode->Count;i++)
    if (SelectNode->Item[i]->StateIndex != SelectNode->StateIndex)
    {
     SetNodeState(SelectNode->Item[i],
                  ItemRightLevel[IndexToItem(SelectNode->StateIndex)]);
     UpdateChild(SelectNode->Item[i]);
    }
  }
}
//////////////////////////////////////////////
//更新当前节点上的所有父节点权限//
//////////////////////////////////////////////
//---------------------------------------------------------------------------
void __fastcall TfrmRight::UpdateParent(TTreeNode *SelectNode)
{
 TTreeNode *tempnode;
 tempnode=SelectNode->Parent;
 while (tempnode != NULL)
 {
  if ((tempnode->StateIndex != SelectNode->StateIndex)&&
     (tempnode->StateIndex != -1))
  {
    SetNodeState(tempnode,0);
  }
  tempnode=tempnode->Parent;
 }
}
//////////////////////////////////
//图标数组、权限类别数组副赋初值//
//////////////////////////////////
//---------------------------------------------------------------------------
void __fastcall TfrmRight::InitPara()
{
 ItemImageIndex[0]=-1;ItemRightLevel[0]=0; //〈空〉
 ItemImageIndex[1]=1;ItemRightLevel[1]=1;   //只读
 ItemImageIndex[2]=2;ItemRightLevel[2]=2;   //打印
 ItemImageIndex[3]=3;ItemRightLevel[3]=3;   //可写
 ItemImageIndex[4]=4;ItemRightLevel[4]=4;  //审核
 RightChanged=false;
 SaveChanged=false;
 RefreshRight=false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::tvUserInfoChange(TObject *Sender,
      TTreeNode *Node)
{
 //只有选中的是用户或用户组才初始化权限
   if ((tvUserInfo->Selected==NULL)||(tvUserInfo->Selected->Level==0)
        ||(RefreshRight==false)) return;
   ResetTreeImage(tvRight); //将权限树全部重置
   InitUserRight(tvUserInfo->Selected);  //显示该用户或用户组具有的权限
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::tvUserInfoChanging(TObject *Sender,
      TTreeNode *Node, bool &AllowChange)
{
   if ((Node==NULL)||(Node->Level==0)||(RefreshRight==false)) return;
   if ((RightChanged) &&
       (Application->MessageBox("是否保存所做的修改?",
                                 "系统提示", MB_OKCANCEL) == IDOK))
   {
    SaveRight(tvUserInfo->Selected); //保存权限的修改
    RightChanged=false;

   }

}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::PopupMenu1Popup(TObject *Sender)
{
 InitPopup(tvRight->Selected);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::tbSaveClick(TObject *Sender)
{
   if ((tvUserInfo->Selected==NULL)||(tvUserInfo->Selected->Level==0)) return;
   if (RightChanged)
   {
    SaveRight(tvUserInfo->Selected); //保存权限的修改
    RightChanged=false;
   }
   tbSetRight->Enabled=true;
   tbSave->Enabled=false;
   tbCancel->Enabled=false;
   mnuperm->Enabled=false;
   tvRight->PopupMenu=NULL;
}
//---------------------------------------------------------------------------

void __fastcall TfrmRight::tbControlClick(TObject *Sender)
{
    g_ClientComm->App->MainForm->BringToFront();
}
//---------------------------------------------------------------------------

void __fastcall TfrmRight::FormClose(TObject *Sender, TCloseAction &Action)
{
  if ((tvUserInfo->Selected!=NULL)&&(tvUserInfo->Selected->Level!=0))
   if ((RightChanged) &&
       (Application->MessageBox("是否保存所做的修改?",
                                 "系统提示", MB_OKCANCEL) == IDOK))
   {
    SaveRight(tvUserInfo->Selected); //保存权限的修改
    RightChanged=false;
   }
  g_ClientComm->DelMsgForm(this->Name);
  Action=caFree;
}
//---------------------------------------------------------------------------

void __fastcall TfrmRight::tbExitClick(TObject *Sender)
{
 Close();
}
//---------------------------------------------------------------------------



void __fastcall TfrmRight::tbSetRightClick(TObject *Sender)
{
  tvRight->PopupMenu=PopupMenu1;
  tbSetRight->Enabled=false;
  tbSave->Enabled=true;
  tbCancel->Enabled=true;
  mnuperm->Enabled=true;
}
//---------------------------------------------------------------------------

void __fastcall TfrmRight::tbCancelClick(TObject *Sender)
{
  if ((tvUserInfo->Selected!=NULL)&&(tvUserInfo->Selected->Level!=0)
     &&RightChanged)
  {
    ResetTreeImage(tvRight); //将权限树全部重置
    InitUserRight(tvUserInfo->Selected);  //显示该用户或用户组具有的权限
    RightChanged=false;
  }
  tvRight->PopupMenu=NULL;
  tbSetRight->Enabled=true;
  tbCancel->Enabled=false;
  tbSave->Enabled=false;
  mnuperm->Enabled=false;

}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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