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;
	}
}

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>