📄 ufrmcqgpshighergroup.pas
字号:
//==============================================================================
// $修订版本号: 1.0 $
// $日期 : 2007年7月20日 星期五 11:15:00 $
// $版本号 : 1.0.0 Alpha 1 $
//
// 上下组别功能实现。
//
// $BeginLog$
// $Endlog $
// $Copyright 版权所有 (c)2006 TRANSIT 保留所有权利$
//==============================================================================
{: 实现说明:
多选参考字段数据过滤事件:
1. 新建记录:
上级用户组仅保留与登录用户组相同的用户组。
下级用户组全部过滤。
2. 编辑记录:
上级用户组当编辑的记录如果是自身记录时过滤;
否则按单位等级编号选择大于等于登录用户的单位等级编号的组
下级用户组按单位等级编号比选择小于等于登录用户的单位等级编号的组
}
unit ufrmCQGPSHigherGroup;
interface
uses
Windows, DB, Classes, SysUtils,
cxTextEdit, cxControls, cxContainer, cxEdit, cxLabel, ExtCtrls, RzPanel,
StdCtrls, cxButtons, Controls, ComCtrls, TbListView, dxDockPanel,
dxDockControl,
uBaseDBForm, uBaseDBDefs, cxLookAndFeelPainters, uBaseDBUtils,
cxMemo, ImgList, dxNavBarCollns, dxNavBarBase, dxNavBar, ufrmBaseDBPurview,
uBaseSystemNavForm, uBaseDBFormInfor, Menus;
type
TfrmCQGPSHigherGroup = class(TBaseDBForm)
dxDockSite1: TdxDockSite;
dxLayoutDockSite1: TdxLayoutDockSite;
dxDockPanel1: TdxDockPanel;
lvOilType: TTbListView;
Panel1: TPanel;
dxDockSite2: TdxDockSite;
dxDockPanel3: TdxDockPanel;
dxLayoutDockSite3: TdxLayoutDockSite;
gbPlan: TRzGroupBox;
Name: TcxTextEdit;
cxLabel4: TcxLabel;
cxLabel1: TcxLabel;
HigherGroupNO: TcxTextEdit;
btnRefresh: TcxButton;
btnEdit: TcxButton;
btnDelete: TcxButton;
btnAdd: TcxButton;
ilSmall: TImageList;
ilLarge: TImageList;
procedure FormCreate(Sender: TObject);
private
procedure doOnChildDataListFilterEvent(_sender: TObject; _master_id: Integer;
_child_table_detail_id: Integer; var _is_filter: Boolean);
function extractLevelNOFromGroupID(_data_list: TList; _group_id: Integer;
var _level_no: Integer): Boolean;
public
GroupID : Integer;
end;
implementation
uses Variants, ufrmCQGPSGroup, ufrmCQGPSGroupEdit;
{$R *.dfm}
{ TfrmProtectSecurityUser }
procedure TfrmCQGPSHigherGroup.doOnChildDataListFilterEvent(
_sender: TObject; _master_id, _child_table_detail_id: Integer;
var _is_filter: Boolean);
var
group_level_no_parent : Integer;
group_level_no_child : Integer;
logon_group_id : Integer;
base_db_form : TfrmCQGPSGroup;
p_field_info : PBaseDBFieldInfo;
is_new : Boolean;
group_id : Integer;
data_value_list : TList;
begin
// 编辑窗口过滤 取得编辑窗口的当前状态
if TComponent(_sender).Owner is TfrmCQGPSGroupEdit then
begin
logon_group_id := BaseDBGlobal.UserGroupIDByName(AppName);
// 获取编辑窗口的编辑状态
is_new := TfrmCQGPSGroupEdit(TComponent(_sender).Owner).IsNew;
// 获取字段值列表
data_value_list := TBaseDBUtility.ExtractFieldValueFromDataListByID(FDataList,
_child_table_detail_id);
base_db_form := TfrmCQGPSGroup(TComponent(_sender).Owner.Owner);
p_field_info := TBaseDBUtility.FindFieldByName('GroupRelationshipParent',
base_db_form.FieldList);
group_id := TBaseDBUtility.ExtractRecordID(data_value_list);
// 新建 (均不可以编辑组的相关信息)
if is_new then
begin
if p_field_info^.ChildForm = Self then
begin
if group_id = logon_group_id then
_is_filter := False
else
_is_filter := True;
end
else
_is_filter := True;
end
// 编辑 (依照上下级关系进行过滤)
else begin
if not extractLevelNOFromGroupID(base_db_form.DataList, _master_id, group_level_no_parent) then
Exit;
if not extractLevelNOFromGroupID(base_db_form.DataList, _child_table_detail_id, group_level_no_child) then
Exit;
// 上级组
if p_field_info^.ChildForm = Self then
begin
if (group_id = logon_group_id) and (_master_id = _child_table_detail_id) then
_is_filter := True
else
_is_filter := group_level_no_parent <= group_level_no_child;
end
//下级组
else begin
_is_filter := group_level_no_parent >= group_level_no_child;
end;
end;
end;
end;
function TfrmCQGPSHigherGroup.extractLevelNOFromGroupID(_data_list: TList;
_group_id: Integer; var _level_no: Integer): Boolean;
var
field_value_list : TList;
value_var : Variant;
begin
// 初始化返回值
Result := False;
field_value_list := TBaseDBUtility.ExtractFieldValueFromDataListByID(_data_list, _group_id);
if not Assigned(field_value_list) then
Exit;
value_var := TBaseDBUtility.ExtractValueByFieldName('LevelNO', field_value_list);
if VarIsNull(value_var) then
Exit;
_level_no := value_var;
Result := True;
end;
procedure TfrmCQGPSHigherGroup.FormCreate(Sender: TObject);
begin
OnChildDataListFilterEvent := doOnChildDataListFilterEvent;
DBListView := lvOilType;
ButtonNew := btnAdd;
ButtonEdit := btnEdit;
ButtonDelete := btnDelete;
ButtonRefresh := btnRefresh;
DBTableName := 'MSC_Group';
DBTableCHNName := '层级管理';
SelectSQL := 'Select * from V_MSC_GroupLevelInfo';
AddField('ID', '编号', 50, ftInteger, False, False, True);
AddField('Name', '名称', 150, ftString, False, True);
AddField('LevelNO', '单位等级', 100, ftInteger);
AddField('LevelName', '单位等级名称', 100, ftString);
InitialInfo;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -