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 + -
显示快捷键?