📄 ufrmcqgpsgroupedit.pas
字号:
//==============================================================================
// $修订版本号: 1.0 $
// $日期 : 2007年7月20日 星期五 10:45:00 $
// $版本号 : 1.0.0 Alpha 1 $
//
// 车辆分组编辑界面功能实现。
// 单位等级是区分组之间上下级关系的唯一标准。
//
// $BeginLog$
// $Endlog $
// $Copyright 版权所有 (c)2006 TRANSIT 保留所有权利$
//==============================================================================
{: 实现说明:
I. 初始化方法:
1. 新建记录时过滤显示单位等级。
2. 编辑记录时不能再选择单位等级。
II. 编辑窗口显示之前事件:
新建记录且登录用户为高级管理员时,在所有的上级用户组中选择登录用户所属组
为新建记录上级组。
III.编辑窗口保存之前事件:
1. 高级管理员不能再新建单位等级为1的组。
2. 非高级管理员必须选择至少1个上级组。
}
unit ufrmCQGPSGroupEdit;
interface
uses
Windows, cxLookAndFeelPainters, cxGraphics, dxStatusBar, StdCtrls,
cxButtons, cxTextEdit, cxControls, cxContainer, cxEdit, cxLabel,
ExtCtrls, RzPanel, dxDockPanel, dxDockControl, Classes, Controls,
uBaseDBEditForm, cxMemo, cxMaskEdit, cxDropDownEdit, ComCtrls,
TbListView, uBaseDBDefs, uBaseDBUtils, Variants, SysUtils,
Dialogs, Menus;
type
TfrmCQGPSGroupEdit = class(TBaseDBEditForm)
dxDockSite1: TdxDockSite;
dxLayoutDockSite1: TdxLayoutDockSite;
dxDockPanel1: TdxDockPanel;
btnSave: TcxButton;
btnCancel: TcxButton;
dxStatusBar: TdxStatusBar;
RzGroupBox1: TRzGroupBox;
cxLabel1: TcxLabel;
Name: TcxTextEdit;
cxLabel2: TcxLabel;
LevelID: TcxComboBox;
cxLabel3: TcxLabel;
GroupRelationshipParent: TTbListView;
cxLabel4: TcxLabel;
GroupRelationshipChild: TTbListView;
cxLabel5: TcxLabel;
UnitID: TcxComboBox;
procedure FormCreate(Sender: TObject);
procedure doOnBeforeEditFormDisplayEvent(_sender: TObject);
procedure doOnBeforeEditFormSaveEvent(_sender: TObject; var _save_flag: Boolean;
var _input_hint: string);
Public
procedure Initial(_is_new: Boolean); override;
end;
implementation
uses ufrmCQGPSGroup, Forms;
{$R *.dfm}
procedure TfrmCQGPSGroupEdit.FormCreate(Sender: TObject);
begin
BeforeEditFormDisplayEvent := doOnBeforeEditFormDisplayEvent;
BeforeEditFormSaveEvent := doOnBeforeEditFormSaveEvent;
CaptionControl := dxDockPanel1;
HintControl := dxStatusBar;
ButtonConfirm := btnSave;
ButtonCancel := btnCancel;
end;
procedure TfrmCQGPSGroupEdit.Initial(_is_new: Boolean);
function filter_combobox_function(_field_data_value: PBaseDBRefData; _field_name: string;
_filter_data: Variant): Boolean;
var
i : Integer;
p_field_value : PBaseDBFieldValue;
begin
Result := False;
_filter_data := TBaseDBUtility.ExtractValueByFieldName('UserLevelNo',
_field_data_value^.FieldValueList);
// 遍历参考表参考数据的字段值列表
for i := 0 to _field_data_value^.FieldValueList.Count -1 do
begin
// 取得数据值指针
p_field_value := PBaseDBFieldValue(_field_data_value^.FieldValueList.Items[i]);
if UpperCase(p_field_value^.FieldInfo^.FieldName) = UpperCase(_field_name) then
begin
if (_filter_data = 1) then
begin
if (p_field_value^.Value >= _filter_data) then
Result := True
else
Result := False;
end
Else begin
if (p_field_value^.Value > _filter_data) then
Result := True
else
Result := False;
end;
end;
end;
end;
var
p_field_value : PBaseDBFieldValue;
ref_id_orginal : Integer;
item_index_orginal : Integer;
item_text : string;
p_field_info : PBaseDBFieldInfo;
p_ref_table : PBaseDBRefTable;
begin
inherited;
if _is_new then
FilterReferenceComboBox(LevelID, 'LevelNO' ,0 ,@filter_combobox_function)
else begin
p_field_value :=
TBaseDBUtility.ExtractFieldValueByFieldName('LevelID', EditFieldValueList);
ref_id_orginal := p_field_value^.Value;
FilterReferenceComboBox(LevelID, 'LevelNO' ,0 ,@filter_combobox_function);
item_index_orginal :=
LevelID.Properties.Items.IndexOfObject(Pointer(ref_id_orginal));
if item_index_orginal = -1 then
begin
p_field_value := TBaseDBUtility.ExtractFieldValueByFieldName(
'LevelID', EditFieldValueList);
p_field_info := TBaseDBUtility.FindFieldByName('LevelID', FieldList);
p_ref_table := p_field_info^.RefTableInfo;
item_text := TBaseDBUtility.RefValueToDisplayText(
p_ref_table^, p_field_value^.Value);
LevelID.Properties.Items.InsertObject(
0, item_text, TObject(Pointer(ref_id_orginal)));
item_index_orginal := 0;
end;
LevelID.ItemIndex := item_index_orginal;
LevelID.Enabled := False;
end;
end;
//function TfrmCQGPSGroupEdit.checkIsSelectSelfGroup(_list_view: TTbListView;
// _login_group_id: Integer; var _parent_group_text: string): boolean;
//var
// i : Integer;
// list_item : TListItem;
// group_id : Integer;
//begin
// Result := False;
//
// for i := 0 to _list_view.Items.Count - 1 do
// begin
// list_item := _list_view.Items.Item[i];
//
// if not Assigned(list_item) then
// Continue;
//
// if list_item.ImageIndex <> 0 then
// Continue;
//
// group_id := TBaseDBUtility.ExtractRecordID(TList(list_item.Data));
//
// if group_id <> - 1 then
// begin
// if group_id = _login_group_id then
// begin
// _parent_group_text := TBaseDBUtility.ExtractValueByFieldName('Name', TList(list_item.Data));
//
// Result := True;
//
// exit;
// end; // end of group
// end; // end of if
// end; // end of for
//end;
procedure TfrmCQGPSGroupEdit.doOnBeforeEditFormDisplayEvent(
_sender: TObject);
var
i : Integer;
list_item : TListItem;
group_id : Integer;
login_group_id : Integer;
purview_group_id: Integer;
begin
if TfrmCQGPSGroupEdit(_sender).GroupRelationshipParent.Items.Count > 0 then
begin
list_item := nil;
login_group_id := TfrmCQGPSGroup(TfrmCQGPSGroupEdit(_sender).Owner).Group_id ;
purview_group_id := TfrmCQGPSGroup(TfrmCQGPSGroupEdit(_sender).Owner).Purview_Group_Id;
for i := 0 to TfrmCQGPSGroupEdit(_sender).GroupRelationshipParent.Items.Count - 1 do
begin
// 仅获取登陆用户自身的上级组
list_item := TfrmCQGPSGroupEdit(_sender).GroupRelationshipParent.Items[i];
if not Assigned(list_item) then Continue;
group_id := TBaseDBUtility.ExtractRecordID(TList(list_item.Data));
if (group_id = login_group_id) and (purview_group_id = 1) and IsNew then
begin
list_item.ImageIndex := 0;
TfrmCQGPSGroupEdit(_sender).GroupRelationshipParent.Enabled := False;
end; // end of if group
end; // end of for
end; // end of if
end;
procedure TfrmCQGPSGroupEdit.doOnBeforeEditFormSaveEvent(_sender: TObject;
var _save_flag: Boolean; var _input_hint: string);
var
i : Integer;
record_count : Integer;
purview_group_id : Integer;
current_level_no : Integer;
level_no_check : Boolean;
is_null_check : Boolean;
is_admin_super : Boolean;
begin
if Assigned(_sender) then
begin
level_no_check := False;
is_null_check := False;
purview_group_id := TfrmCQGPSGroup(TfrmCQGPSGroupEdit(_sender).Owner).Purview_Group_Id;
current_level_no := ExtractRefComboBoxInfoValue(LevelID, 'LevelNO');
is_admin_super := purview_group_id = 1;
// 仅当超级管理员登陆时验证
if is_admin_super then
begin
//判断是否为超级管理员的等级
if (current_level_no = 1) and (LevelID.Enabled) then
begin
_input_hint := Format('单位等级为%s的所属组已存在!',[LevelID.Text]);
level_no_check := True;
end;
end
else begin
// 非管理员用户登陆时加上级用户组选择限制
record_count := 0;
for i := 0 to TfrmCQGPSGroupEdit(_sender).GroupRelationshipParent.Items.Count -1 do
begin
if TfrmCQGPSGroupEdit(_sender).GroupRelationshipParent.Items[i].ImageIndex = 0 then
record_count := record_count + 1;
end;
if record_count = 0 then
begin
_input_hint := '上级用户组不允许为空!';
is_null_check := True;
end;
end;
if level_no_check or is_null_check then
_save_flag := False
else
_save_flag := True;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -