right.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 349 行

CPP
349
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Right.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "StdBaseForm"
#pragma link "SDGrid"
#pragma resource "*.dfm"
TfrmRight *frmRight;
//---------------------------------------------------------------------------
__fastcall TfrmRight::TfrmRight(TComponent* Owner, HWND chWnd, AnsiString MidCode,AnsiString WhereStr)
        : TStdBaseForm(Owner,chWnd,MidCode,WhereStr)
{

  comServer->Query();
  FillUserTreeView();
  FillModule();
  l_ModuleLevel=0;
  l_UserLevel=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::FillUserTreeView()
{
    TTreeNode *RootNode,*NewNode;
    AnsiString str;
    str="select syscode=UsergroupCode,sysname=UsergroupName,usercode='',username='',treelevel=1";
    str+="from sdUserGroup  union select syscode=UserGroup,sysname='',usercode=UserCode,username=UserName";
    str+=",treelevel=2 from sduser order by syscode,treelevel,usercode";
    Query->Close();
    Query->Open(str,"");
    Query->MoveFirst();
    tvUser->Items->Clear();
    RootNode=tvUser->Items->Add(NULL,"用户树");
    while(!Query->Eof)
    {
     if(Query->FieldByName("treelevel")==1)
       NewNode=tvUser->Items->AddChild(RootNode,"["+AnsiString(Query->FieldByName("syscode"))+"]"+AnsiString(Query->FieldByName("sysname")));
     else
       tvUser->Items->AddChild(NewNode,"["+AnsiString(Query->FieldByName("usercode"))+"]"+AnsiString(Query->FieldByName("username")));
     Query->MoveNext();
    }
    RootNode->Selected=true;
    tvUser->Items->Item[0]->Expand(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::FillModule()
{
    TTreeNode *NewNode[7];
    AnsiString str;
    int level;
    str="select ModuleCode,ModuleCaption,ModuleLevel from sdModule where modulestop=1 order by  moduleCode";
    Query->Close();
    Query->Open(str,"");
    Query->MoveFirst();
    tvModule->Items->Clear();
    NewNode[0]=tvModule->Items->Add(NULL,"功能树");
    while(!Query->Eof)
    {

      str="["+AnsiString(Query->FieldByName("ModuleCode"))+"]"+AnsiString(Query->FieldByName("ModuleCaption"));
      level=StrToInt(Query->FieldByName("ModuleLevel"));
      NewNode[level]=tvModule->Items->AddChild(NewNode[level-1],str);
      Query->MoveNext();
    }
    NewNode[0]->Selected=true;
    tvModule->Focused();
    tvModule->Items->Item[0]->Expand(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::bbCancelClick(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::bbSaveClick(TObject *Sender)
{
  if(l_ModuleLevel==0||l_UserLevel==0)
    throw  Exception("不能对根节点操作.");
  try{
  Screen->Cursor=crHourGlass;
  SaveRight();
  }
  __finally
  {
   Screen->Cursor=crDefault;
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::tvUserChange(TObject *Sender, TTreeNode *Node)
{
   l_UserLevel=Node->Level;
   l_User=Node->Text.SubString(2,Node->Text.AnsiPos("]")-2);
   FillRight();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::tvModuleChange(TObject *Sender, TTreeNode *Node)
{
   l_ModuleLevel=Node->Level;
   l_Module=Node->Text.SubString(2,Node->Text.AnsiPos("]")-2);
   FillRight();
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::FillRight()
{
    if(l_ModuleLevel==0||l_UserLevel==0)
      return;
    AnsiString str,KeyStr;
    sgRight->RowCount=1;
    str="select Modulecode,ModuleCaption from sdModule where  modulestop=1 and ModuleCode  like '"+l_Module+"%' order by moduleCode";
    Query->Close();
    Query->Open(str,"");
    Query->MoveFirst();
    while(!Query->Eof)
    {
      str=AnsiString(Query->FieldByName("ModuleCaption"))+"\t";
      if(comServer->RecordCount>0)
      {
        KeyStr=l_User+"\t"+AnsiString(Query->FieldByName("Modulecode"))+"\t";
        if(!comServer->LocateByKey(KeyStr))
        {
          if(AnsiString(GetHeadValue("RightRange"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightRange"))=="2")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightRange"))=="3")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightAdd"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightEdit"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightDelete"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightCheck"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightUnCheck"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightClose"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightUnClose"))=="1")
            str+="\tY";
          else
            str+="\t";
          if(AnsiString(GetHeadValue("RightPrint"))=="1")
            str+="\tY";
          else
            str+="\t";
          str+="\t"+AnsiString(Query->FieldByName("ModuleCode"));
        }
        else
          str+="\t\t\t\t\t\t\t\t\t\t\t\t"+AnsiString(Query->FieldByName("ModuleCode"));
      }
      else
          str+="\t\t\t\t\t\t\t\t\t\t\t\t"+AnsiString(Query->FieldByName("ModuleCode"));
      sgRight->AddItem(str);
      Query->MoveNext();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::SaveRight()
{
   AnsiString sql;
   int l_Range=0;
   sql="delete  sdright where RightModuleCode like '"+l_Module+"%' and RightUserCode ='"+l_User+"'";
   try
   {
     TComResultSet *pResultSet=new  TComResultSet(Handle,g_ClientHandle);
     pResultSet->Close();
     pResultSet->Execute(sql);
     delete  pResultSet;
     for(int i=1;i<sgRight->RowCount;i++)
     {
       l_Range=0;
       if(sgRight->Cells[2][i]=="Y")
         l_Range=1;
       else if (sgRight->Cells[3][i]=="Y")
         l_Range=2;
       else  if (sgRight->Cells[4][i]=="Y")
         l_Range=3;
       if(l_Range!=0)
       {
          comServer->AddNew();
          SetFieldValue("RightUserCode",l_User);
          SetFieldValue("RightModuleCode",sgRight->Cells[13][i]);
          SetFieldValue("RightLevel",l_UserLevel);
          SetFieldValue("RightRange",l_Range);
          SetFieldValue("RightAdd",(sgRight->Cells[5][i]=="Y"?"1":"0"));
          SetFieldValue("RightEdit",(sgRight->Cells[6][i]=="Y"?"1":"0"));
          SetFieldValue("RightDelete",(sgRight->Cells[7][i]=="Y"?"1":"0"));
          SetFieldValue("RightCheck",(sgRight->Cells[8][i]=="Y"?"1":"0"));
          SetFieldValue("RightUnCheck",(sgRight->Cells[9][i]=="Y"?"1":"0"));
          SetFieldValue("RightClose",(sgRight->Cells[10][i]=="Y"?"1":"0"));
          SetFieldValue("RightUnClose",(sgRight->Cells[11][i]=="Y"?"1":"0"));
          SetFieldValue("RightPrint",(sgRight->Cells[12][i]=="Y"?"1":"0"));
          comServer->Post();
       }
     }

   }
   catch(...)
   {
    throw  Exception("保存失败.");
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::sbAllClick(TObject *Sender)
{
    for(int i=1;i<sgRight->RowCount;i++)
     sgRight->Cells[1][i]="Y";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::sbClearClick(TObject *Sender)
{
    for(int i=1;i<sgRight->RowCount;i++)
     sgRight->Cells[1][i]="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::sbOtherClick(TObject *Sender)
{
    for(int i=1;i<sgRight->RowCount;i++)
    {
      if(sgRight->Cells[1][i]=="Y")
         sgRight->Cells[1][i]="";
      else
         sgRight->Cells[1][i]="Y";
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::sgRightDblClick(TObject *Sender)
{
    if(sgRight->Col>4)
    {
      if(sgRight->Cells[sgRight->Col][sgRight->Row]=="Y")
         sgRight->Cells[sgRight->Col][sgRight->Row]="";
      else
         sgRight->Cells[sgRight->Col][sgRight->Row]="Y";
    }
    if(sgRight->Col>0&&sgRight->Col<5)
    {
      if(sgRight->Cells[sgRight->Col][sgRight->Row]=="Y")
         sgRight->Cells[sgRight->Col][sgRight->Row]="";
      else
      {
         sgRight->Cells[sgRight->Col][sgRight->Row]="Y";
         if(sgRight->Col==2)
         {
           sgRight->Cells[3][sgRight->Row]="";
           sgRight->Cells[4][sgRight->Row]="";
         } else if(sgRight->Col==3)
         {
           sgRight->Cells[2][sgRight->Row]="";
           sgRight->Cells[4][sgRight->Row]="";
         }else
         {
           sgRight->Cells[2][sgRight->Row]="";
           sgRight->Cells[3][sgRight->Row]="";
         }

      }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::ckAddClick(TObject *Sender)
{
    for(int i=1;i<sgRight->RowCount;i++)
    {
      if(sgRight->Cells[1][i]=="Y")
      {
        if(((TCheckBox*)Sender)->Checked)
        {
          sgRight->Cells[((TCheckBox*)Sender)->Tag][i]="Y";
          if(((TCheckBox*)Sender)->Tag==2)
          {
            sgRight->Cells[3][i]="";
            sgRight->Cells[4][i]="";
            ckGroup->Checked=false;
            ckAll->Checked=false;

          }else if(((TCheckBox*)Sender)->Tag==3)
          {
            sgRight->Cells[2][i]="";
            sgRight->Cells[4][i]="";
            ckUser->Checked=false;
            ckAll->Checked=false;

          }else if(((TCheckBox*)Sender)->Tag==4)
          {
            sgRight->Cells[2][i]="";
            sgRight->Cells[3][i]="";
            ckUser->Checked=false;
            ckGroup->Checked=false;
          }

        }
        else
          sgRight->Cells[((TCheckBox*)Sender)->Tag][i]="";
      }
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmRight::ckAllSelectClick(TObject *Sender)
{
   if(ckAllSelect->Checked)
   {
     ckAdd->Checked=true;
     ckUpdate->Checked=true;
     ckDelete->Checked=true;
     ckCheck->Checked=true;
     ckPrint->Checked=true;
     ckUnCheck->Checked=true;
     ckClose->Checked=true;
     ckUnClose->Checked=true;

   }
   else
   {
     ckAdd->Checked=false;
     ckUpdate->Checked=false;
     ckDelete->Checked=false;
     ckCheck->Checked=false;
     ckPrint->Checked=false;
     ckUnCheck->Checked=false;
     ckClose->Checked=false;
     ckUnClose->Checked=false;
   }
}
//---------------------------------------------------------------------------

⌨️ 快捷键说明

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