⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ufrmcqgpsuser.pas

📁 msc map program to control client of tools,use for map guide
💻 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 + -