📄 ufrmcqgpsuser.pas
字号:
//==============================================================================
// $修订版本号: 1.0 $
// $日期 : 2007年7月20日 星期五 09:20:00 $
// $版本号 : 1.0.0 Alpha 1 $
//
// 用户管理功能实现。
// 用于管理登录用户、系统权限及登录用户能在系统中看到的权限数据。
// 权限数据为登录用户在界面中能看到的相关数据。
//
// $BeginLog$
// $Endlog $
// $Copyright 版权所有 (c)2006 TRANSIT 保留所有权利$
//==============================================================================
{: 实现说明:
登录用户与权限组与组别(数据分组)相关联
1. 权限数据显示:登录用户为高级管理员时,显示全部数据;否则显示登录用户所属组
及其下属组的所有用户数据。
2. 组别为参考字段,在下拉框中的内容为登录用户所属组及所有下级组。
}
unit ufrmCQGPSUser;
interface
uses
Windows, DB, Classes,
cxTextEdit, cxControls, cxContainer, cxEdit, cxLabel, ExtCtrls, RzPanel,
StdCtrls, cxButtons, Controls, ComCtrls, TbListView, dxDockPanel,
dxDockControl, Graphics, SysUtils,
uBaseDBForm, uBaseDBDefs, ufrmCQGPSUserEdit, cxLookAndFeelPainters,
cxMemo, ImgList, dxNavBarCollns, dxNavBarBase, dxNavBar, ufrmBaseDBPurview,
uBaseSystemNavForm, uBaseDBFormInfor, ufrmCQGPSUserType, uBaseDBUtils,
uGPSANAUtils, Menus, cxClasses;
type
TfrmCQGPSUser = class(TBaseDBForm)
dxDockSite1: TdxDockSite;
dxLayoutDockSite1: TdxLayoutDockSite;
dxDockPanel1: TdxDockPanel;
lvOilType: TTbListView;
Panel1: TPanel;
dxDockSite2: TdxDockSite;
dxDockPanel3: TdxDockPanel;
dxLayoutDockSite3: TdxLayoutDockSite;
gbPlan: TRzGroupBox;
cxLabel1: TcxLabel;
Name: TcxTextEdit;
btnRefresh: TcxButton;
btnEdit: TcxButton;
btnDelete: TcxButton;
btnAdd: TcxButton;
ilSmall: TImageList;
ilLarge: TImageList;
cxLabel2: TcxLabel;
GroupID: TcxTextEdit;
cxLabel3: TcxLabel;
UserTypeID: TcxTextEdit;
cxLabel4: TcxLabel;
PurviewGroupID: TcxTextEdit;
cxLabel5: TcxLabel;
IsActive: TcxTextEdit;
dxNavBar1: TdxNavBar;
dxNavBar1Group2: TdxNavBarGroup;
biDataImport: TdxNavBarItem;
biPurview: TdxNavBarItem;
procedure FormCreate(Sender: TObject);
procedure biDataImportClick(Sender: TObject);
procedure biPurviewClick(Sender: TObject);
procedure lvOilTypeCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
private
{ Private declarations }
public
IsEdit: Boolean;
IsAdd: Boolean;
SelectedItem: TListItem;
Purview_group_id: Integer;
Group_id : Integer;
User_id : Integer;
procedure CommandExecuteDelete; override;
{ Public declarations }
end;
implementation
{$R *.dfm}
{ TfrmProtectSecurityUser }
procedure TfrmCQGPSUser.FormCreate(Sender: TObject);
var
p_ref_table_group : PBaseDBRefTable;
p_ref_table_user_type : PBaseDBRefTable;
p_ref_table_pur_group : PBaseDBRefTable;
str_sql : string;
begin
DBListView := lvOilType;
ButtonNew := btnAdd;
ButtonEdit := btnEdit;
ButtonDelete := btnDelete;
ButtonRefresh := btnRefresh;
DBTableName := 'MSC_User';
DBTableCHNName := '用户信息';
if BaseDBGlobal.UserPurviewGroupIDByName(AppName) = 1 then
SelectSQL := 'Select * from MSC_User'
else
SelectSQL := Format('Select * from MSC_User Where GroupID In '+
'(Select * from F_GetAllGroupTabelBYGroupID(%d))',
[BaseDBGlobal.UserGroupIDByName(AppName)]);
EditFormClass := TfrmCQGPSUserEdit;
Group_id := BaseDBGlobal.UserGroupIDByName(AppName);
Purview_group_id := BaseDBGlobal.UserPurviewGroupIDByName(AppName);
User_id := BaseDBGlobal.UserIDByName(AppName);
str_sql := format('Select ID, Name from MSC_Group '+
'Where ID In (Select GroupID from F_GetAllGroupTabelByGroupID(%d))',
[Group_id]);
p_ref_table_group := AddRefTable('MSC_Group', '用户组', 'Name', 'ID', str_sql);
p_ref_table_user_type := AddRefTable('MSC_UserType', '用户类型', 'Name', 'ID');
p_ref_table_pur_group := AddRefTable('BaseDB_UserGroup', '权限用户组', 'Name', 'ID');
AddField('ID', '编号', 100, ftInteger, False, True, True);
AddField('Name', '名称', 100, ftString, False, True);
AddField('GroupID', '数据分组', 100, ftReference, False, False, False,
'', '', p_ref_table_group);
AddField('UserTypeID', '类型', 100, ftReference, False, False, False,
'', '', p_ref_table_user_type);
AddField('Password', '密码', 100, ftString, False, False, False, '', '', nil,
False, 0, False);
AddField('PurviewGroupID', '权限分组', 100, ftReference, False, False, False,
'', '', p_ref_table_pur_group);
AddField('IsActive', '是否激活', 80, ftBoolean, False, False, False, '激活', '禁用');
// AddChildTableFieldMultiRef('UserUserTypeRelationShip', '用户类型', 100, TfrmCQGPSUserType,
// 'MSC_UserUserTypeRelationShip', 'ID', 'UserID', 'UserTypeID',
// '', '', 'Name', True);
InitialInfo;
end;
procedure TfrmCQGPSUser.biDataImportClick(Sender: TObject);
var
base_nav_form : TBaseSystemNavForm;
begin
// 取得导航窗口
base_nav_form := TBaseSystemNavForm(Owner);
// 向数据库写入基本数据窗口信息
TBaseDBFormInfor.WriteBaseDBFormFunctionInfor(Self, base_nav_form, AppDBName);
end;
procedure TfrmCQGPSUser.biPurviewClick(Sender: TObject);
var
frmBaseDBPurview: TfrmBaseDBPurview;
begin
frmBaseDBPurview := TfrmBaseDBPurview.Create(Owner);
try
frmBaseDBPurview.ShowModal;
finally
frmBaseDBPurview.Free;
end;
end;
procedure TfrmCQGPSUser.CommandExecuteDelete;
var
record_id : Integer;
select_user_name : string;
logon_user_name : string;
p_app_global : PBaseDBAppGlobal;
begin
if Assigned(lvOilType.Selected) then
begin
record_id := TBaseDBUtility.ExtractRecordID(TList(lvOilType.Selected.data));
if record_id = 1 then
begin
baseDBUtilShowMessageEx('未能进行删除',
'非常抱歉,您不能删除超级管理员。', True);
exit;
end;
p_app_global := BaseDBGlobal.AppGlobalByName(AppName);
logon_user_name := p_app_global^.UserName;
select_user_name := TBaseDBUtility.ExtractValueByFieldName('Name', TList(lvOilType.Selected.Data));
if UpperCase(select_user_name) = UpperCase(logon_user_name) then
begin
baseDBUtilShowMessageEx('未能进行删除',
'非常抱歉,您要删除的用户与您登陆的用户相同。', True);
exit;
end;
end;
inherited;
end;
procedure TfrmCQGPSUser.lvOilTypeCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
var
record_id : Integer;
begin
DefaultDraw := True;
if TryStrToInt(Item.Caption, record_id) then
begin
if record_id = 1 then
Sender.Canvas.Font.Color := clTeal
else
Sender.Canvas.Font.Color := clBlack;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -