BCB登录后全局对象以及权限分配
建立全局对象:
class GetUser
{
public:
GetUserInfo(AnsiString userid);
String szQXList; //权限列表
String szUserID; //用户ID
String szUserName; //用户名
String szPassWord; //密码
String szRole; //角色
};
extern PACKAGE GetUser UserInfo; //全局对象
获取用户信息:
GetUser::GetUserInfo(AnsiString userid)
{
data = new TDataModule2(NULL);
String SQL = "select 用户编号,姓名,密码,权限组ID,权限组名称 from 用户清单 where 用户编号 = " + userid;
data->FDQuery1->Connection = data->FDConnection1;
data->FDQuery1->Open(SQL);
this->szUserName = data->FDQuery1->FieldByName("姓名")->AsString;
this->szUserID = data->FDQuery1->FieldByName("用户编号")->AsString;
this->szPassWord = data->FDQuery1->FieldByName("密码")->AsString;
this->szRole = data->FDQuery1->FieldByName("权限组名称")->AsString;
String SQLQX = "SELECT [权限列表] FROM [jxcbook].[dbo].[权限组列表] where [权限组ID] = " + data->FDQuery1->FieldByName("权限组ID")->AsString;
data->FDQuery1->Open(SQLQX);
this->szQXList = data->FDQuery1->FieldByName("权限列表")->AsString;
delete data;
}
权限绑定:
加入一个TActionList组件,创建Action,将Tag属性设置与权限表只的权限ID一一对应。如果Tag的值包含在权限列表中,则表示有权限打开。
bool TForm1::GetRole(String nTag)
{
String aa = UserInfo.szQXList;
if(aa.Pos(nTag))
return true;
else
return false;
判断是否有权限:
void __fastcall TForm1::ActionList1Update(TBasicAction *Action, bool &Handled)
{
//
TAction *pAction = (TAction *) Action;
switch(pAction->Tag)
{
case 1:
pAction->Enabled = this->GetRole("1");
Handled = true;
break;
case 2:
pAction->Enabled = this->GetRole("2");
Handled = true;
break;
case 3:
pAction->Enabled = this->GetRole("3");
Handled = true;
break;
}
}