stockuserpower.cpp

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

CPP
265
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "StockUserPower.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "StdBaseForm"
#pragma link "SDGrid"
#pragma link "fpanel"
#pragma resource "*.dfm"
TfrmStockUserPower *frmStockUserPower;
//---------------------------------------------------------------------------
__fastcall TfrmStockUserPower::TfrmStockUserPower(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 TfrmStockUserPower::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 TfrmStockUserPower::FillModule()
{
    TTreeNode *NewNode[7];
    AnsiString str;
    int level;
    //str="select ModuleCode,ModuleCaption,ModuleLevel from sdModule where modulestop=1 order by  moduleCode";
    str="select SthCode,SthName from sdSth order by SthCode";
    Query->Close();
    Query->Open(str,"");
    Query->MoveFirst();
    tvModule->Items->Clear();
    NewNode[0]=tvModule->Items->Add(NULL,"所有仓库");
    while(!Query->Eof)
    {

      str="["+AnsiString(Query->FieldByName("SthCode"))+"]"+AnsiString(Query->FieldByName("SthName"));
      NewNode[1]=tvModule->Items->AddChild(NewNode[0],str);
      Query->MoveNext();
    }
    NewNode[0]->Selected=true;
    tvModule->Focused();
    tvModule->Items->Item[0]->Expand(false);
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::bbCancelClick(TObject *Sender)
{
  Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::bbSaveClick(TObject *Sender)
{
  if(l_UserLevel==0)
    throw  Exception("不能对用户根节点操作.");
    Screen->Cursor=crHourGlass;
  SaveRight();
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::tvUserChange(TObject *Sender, TTreeNode *Node)
{
   l_UserLevel=Node->Level;
   l_User=Node->Text.SubString(2,Node->Text.AnsiPos("]")-2);
   FillRight();
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::tvModuleChange(TObject *Sender, TTreeNode *Node)
{
   l_ModuleLevel=Node->Level;
   l_Module=Node->Text.SubString(2,Node->Text.AnsiPos("]")-2);
   FillRight();
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::FillRight()
{

    if(l_UserLevel==0)
      return;

   /* if  (l_ModuleLevel==1)
    comServer->FilterString=" LrUser='"+l_User+"' and LrSth='"+l_Module+"' ";
    if  (l_ModuleLevel==0)
    comServer->FilterString=" LrUser='"+l_User+"' ";
    */


    AnsiString str,KeyStr;
    sgRight->RowCount=1;
    if(l_ModuleLevel==1)
    str="select LocSthCode,LocSthName=isnull((select SthName from sdSth where SthCode=LocSthCode),''),LocCode,LocName from sdloc where LocSthCode='"+l_Module+"' order by LocsthCode,LocCode";
    else if(l_ModuleLevel==0)
    str="select LocSthCode,LocSthName=isnull((select SthName from sdSth where SthCode=LocSthCode),''),LocCode,LocName from sdloc where LocSthCode like '%' order by LocsthCode,LocCode";
    Query->Close();
    Query->Open(str,"");
    Query->MoveFirst();
    while(!Query->Eof)
    {
      str=AnsiString(Query->FieldByName("LocSthCode"))+"\t"
         +AnsiString(Query->FieldByName("LocSthName"))+"\t"
         +AnsiString(Query->FieldByName("LocCode"))+   "\t"
         +AnsiString(Query->FieldByName("LocName"))+   "\t";
      if(comServer->RecordCount>0)
      {

        KeyStr=AnsiString(Query->FieldByName("LocSthCode"))+"\t"
              +AnsiString(Query->FieldByName("LocCode"))   +"\t"
              +l_User                                      +"\t"
              +AnsiString(l_UserLevel -1)                  +"\t";
        if(!comServer->LocateByKey(KeyStr))
        {

          str+=+"Y\t";
        }
      }
      else
      str+="\t";

      sgRight->AddItem(str);
      Query->MoveNext();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::SaveRight()
{
   AnsiString sql;
   int l_Range=0;
   if (l_Module=="")
   l_Module="所有仓库";
   sql="Exec ksLocRight_delete " ;
   sql+="'"+l_Module+"','"+l_User+"',"+AnsiString(l_UserLevel -1)+","+AnsiString(l_ModuleLevel);

     try{
     Query->Close();
     Query->Execute(sql);
     //comServer->Query();


     for(int i=1;i<sgRight->RowCount;i++)
     {
         l_Range=0;
       if(sgRight->Cells[4][i]=="Y")
         l_Range=1;
       if(l_Range!=0)
       {
          comServer->AddNew();
          SetFieldValue("LrUser",l_User);
          SetFieldValue("LrSth",sgRight->Cells[0][i]);
          SetFieldValue("LrLevel",AnsiString(l_UserLevel -1));
          SetFieldValue("LrLoc",sgRight->Cells[2][i]);
          comServer->Post();
        }
     }
     comServer->Query();
     Screen->Cursor=crArrow;
   }
   catch(...)
   {
    throw  Exception("保存失败.");
   }
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::sbAllClick(TObject *Sender)
{
    for(int i=1;i<sgRight->RowCount;i++)
     sgRight->Cells[4][i]="Y";
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::sbClearClick(TObject *Sender)
{
    for(int i=1;i<sgRight->RowCount;i++)
     sgRight->Cells[4][i]="";
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::sbOtherClick(TObject *Sender)
{
    for(int i=1;i<sgRight->RowCount;i++)
    {
      if(sgRight->Cells[4][i]=="Y")
         sgRight->Cells[4][i]="";
      else
         sgRight->Cells[4][i]="Y";
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::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";
    }

}
//---------------------------------------------------------------------------
void __fastcall TfrmStockUserPower::ckUserMouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  /*  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]="";
      }
    } */
}
//---------------------------------------------------------------------------



⌨️ 快捷键说明

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