📄 role.pas
字号:
unit Role;
interface
uses
Windows, Messages, SysUtils,DB, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, CheckLst, Grids, DBGrids, Mask, DBCtrls,
ExtCtrls,Menus,ComCtrls, ToolWin,ADODB;
type
TForm_Role = class(TForm)
DataSource1: TDataSource;
Panel_down: TPanel;
Label1: TLabel;
Panel_button: TPanel;
AppendBtn: TBitBtn;
EditBtn: TBitBtn;
DeleteBtn: TBitBtn;
BitBtn3: TBitBtn;
saveBtn: TBitBtn;
CancelBtn: TBitBtn;
P_main: TPanel;
Panel1: TPanel;
CBx_00: TCheckListBox;
Label2: TLabel;
CBx_01: TCheckListBox;
CBx_02: TCheckListBox;
CBx_04: TCheckListBox;
DBGrid1: TDBGrid;
SelallBtn: TBitBtn;
ClearBtn: TBitBtn;
UserManagerBtn: TBitBtn;
Label3: TLabel;
Label6: TLabel;
Label4: TLabel;
CBx_03: TCheckListBox;
Label5: TLabel;
E_name: TDBEdit;
procedure SelallBtnClick(Sender: TObject);
procedure ClearBtnClick(Sender: TObject);
procedure AppendBtnClick(Sender: TObject);
procedure DeleteBtnClick(Sender: TObject);
procedure EditBtnClick(Sender: TObject);
procedure saveBtnClick(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
procedure DataSource1DataChange(Sender: TObject; Field: TField);
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure UserManagerBtnClick(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
B_create:boolean;
edit_teamname:string;
procedure refreshdb;
procedure invalidation_control;
procedure active_control;
public
{ Public declarations }
procedure Setfunctionitem();
function Getfunctionitem():boolean;
end;
var
Form_Role: TForm_Role;
Power_array:array[0..19,0..29]of char;
implementation
uses data,sharevar,sharefun, Admin;
{$R *.dfm}
procedure TForm_role.refreshdb;
begin
with DataMod.ADOQteam do
begin
try
close;
sql.clear;
sql.Add('select * from teampower');
execsql;
open;
except
MsgErr(handle,'刷新数据库失败(teampower_Q)!');
end;
end;
end;
procedure TForm_role.invalidation_control;
begin
panel1.Enabled :=false;
e_name.Enabled :=false;
DBGrid1.Enabled :=true;
SelAllBtn.Enabled :=false;
ClearBtn.Enabled :=false;
EditBtn.Enabled:=true;
DeleteBtn.Enabled:=true;
AppendBtn.Enabled:=true;
if curAdmin.team_power[4][2]='0' then
begin
UserManagerBtn.Enabled:=false;
exit;
end;
UserManagerBtn.Enabled :=true;
end;
procedure TForm_role.active_control;
begin
DBGrid1.Enabled :=false;
panel1.Enabled :=true;
ClearBtn.Enabled :=true;
SelAllBtn.Enabled :=true;
if DataMod.ADOQteam.State in [dsinsert] then ClearBtn.Click;
UserManagerBtn.Enabled :=false;
EditBtn.Enabled:=false;
DeleteBtn.Enabled:=false;
AppendBtn.Enabled:=false;
e_name.Enabled :=true;
e_name.SetFocus;
end;
procedure TForm_Role.FormCreate(Sender: TObject);
begin
B_create:=false;
refreshdb;
B_create:=DataMod.ADOQteam.Active;
end;
procedure TForm_Role.FormShow(Sender: TObject);
begin
fillchar(Power_array,sizeof(Power_array),'0');
if curAdmin.team_power[4][2]='0' then
begin
UserManagerBtn.Enabled:=false;
UserManagerBtn.Visible:=false;
end;
end;
procedure TForm_Role.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataMod.ADOQteam.Close;
action:=cafree;
end;
procedure TForm_Role.SelallBtnClick(Sender: TObject);
var
i,j:integer;
subobj:TCheckListBox;
begin
for i:=0 to panel1.ControlCount -1 do
if panel1.Controls[i].ClassType = TCheckListBox then
begin
subobj:=(panel1.Controls[i] as TCheckListBox);
for j:=0 to subobj.Count-1 do subobj.Checked[j] :=true;
end;
end;
procedure TForm_Role.ClearBtnClick(Sender: TObject);
var
i,j:integer;
subobj:TCheckListBox;
begin
for i:=0 to panel1.ControlCount -1 do
if panel1.Controls[i].ClassType = TCheckListBox then
begin
subobj:=(panel1.Controls[i] as TCheckListBox);
for j:=0 to subobj.Count-1 do subobj.Checked[j] :=false;
end;
end;
procedure TForm_Role.AppendBtnClick(Sender: TObject);
var
MaxID:integer;
begin
GetMaxID(DataMod.ADOCon,'teampower','team_id',MaxID);
if DataMod.ADOQteam.State in [dsedit,dsinsert] then exit;
with DataMod.ADOQteam do
begin
append;
FieldValues['team_id']:=MaxID;
FieldValues['team_name']:='';
end;
active_control;
end;
procedure TForm_Role.DeleteBtnClick(Sender: TObject);
var
team_name:string;
begin
if DataMod.ADOQteam.State in [dsedit,dsinsert] then exit;
if DataMod.ADOQteam.RecordCount<=0 then exit;
team_name:=DataMod.ADOQteam.FieldValues['team_name'];
if MsgQst(handle,'确定删除权限组 ['+team_name+'] 吗?') =IDYES then
begin
panel1.Enabled :=false;
e_name.Enabled :=false;
UserManagerBtn.Enabled :=true;
try
DataMod.ADOQteam.Delete;
except
MsgOk(handle,'用户表中有该组的操作员,请先删除对应操作员或更改其权限组!');
exit;
end;
refreshdb;
end;
end;
procedure TForm_Role.EditBtnClick(Sender: TObject);
begin
if DataMod.ADOQteam.State in [dsedit,dsinsert] then exit;
if DataMod.ADOQteam.RecordCount<=0 then exit;
edit_teamname:=DataMod.ADOQteam.FieldValues['team_name'];
DataMod.ADOQteam.Edit;
active_control;
end;
procedure TForm_Role.saveBtnClick(Sender: TObject);
var info, team_name:string;
team_id:integer;
begin
team_name:=trim(e_name.text);
if not (DataMod.ADOQteam.State in[dsedit,dsinsert]) then exit;
if team_name='' then
begin
MsgErr(handle,'权组名不能为空!',);
e_name.SetFocus;
exit;
end;
if (DataMod.ADOQteam.State in[dsinsert]) and findRec('teampower','team_name',team_name,info) then
begin
MsgOK(handle,'权限组名:['+team_name+']已存在!');
e_name.SetFocus;
exit;
end;
if DataMod.ADOQteam.State in [dsedit] then
begin
if trim(team_name)<>trim(edit_teamname) then
if findRec('teampower','team_name',team_name,info) then
begin
MsgOK(handle,'权限组名:['+team_name+']已存在!');
e_name.SetFocus;
exit;
end;
end;
//处理功能项
if not Getfunctionitem()then
begin
MsgOK(handle,'你必须选择功能项,否则增加不成功!');
exit;
end;
DataMod.ADOQteam.FieldByName('team_name').AsString :=e_name.Text;
DataMod.ADOQteam.FieldByName('power1').AsString :=power_array[0];
DataMod.ADOQteam.FieldByName('power2').AsString :=power_array[1];
DataMod.ADOQteam.FieldByName('power3').AsString :=power_array[2];
DataMod.ADOQteam.FieldByName('power4').AsString :=power_array[3];
DataMod.ADOQteam.FieldByName('power5').AsString :=power_array[4];
DataMod.ADOQteam.FieldByName('power6').AsString :=power_array[5];
DataMod.ADOQteam.FieldByName('power7').AsString :=power_array[6];
DataMod.ADOQteam.FieldByName('power8').AsString :=power_array[7];
DataMod.ADOQteam.FieldByName('power9').AsString :=power_array[8];
DataMod.ADOQteam.FieldByName('power10').AsString :=power_array[9];
DataMod.ADOQteam.FieldByName('power11').AsString :=power_array[10];
DataMod.ADOQteam.FieldByName('power12').AsString :=power_array[11];
DataMod.ADOQteam.FieldByName('power13').AsString :=power_array[12];
DataMod.ADOQteam.FieldByName('power14').AsString :=power_array[13];
DataMod.ADOQteam.FieldByName('power15').AsString :=power_array[14];
DataMod.ADOQteam.FieldByName('power16').AsString :=power_array[15];
DataMod.ADOQteam.FieldByName('power17').AsString :=power_array[16];
DataMod.ADOQteam.FieldByName('power18').AsString :=power_array[17];
DataMod.ADOQteam.FieldByName('power19').AsString :=power_array[18];
DataMod.ADOQteam.FieldByName('power20').AsString :=power_array[19];
try
team_id:=DataMod.ADOQteam.FieldValues['team_id'];
DataMod.ADOQteam.post;
except
MsgErr(handle,'权限组操作失败!');
end;
invalidation_control;
if curAdmin.user_team_id = team_id then
if not CBx_04.Checked[2] then
begin
UserManagerBtn.Enabled:=false;
UserManagerBtn.Visible:=false;
end
else
begin
UserManagerBtn.Enabled:=true;
UserManagerBtn.Visible:=true;
end;
refreshdb;
end;
procedure TForm_Role.CancelBtnClick(Sender: TObject);
begin
if not (DataMod.ADOQteam.State in [dsedit,dsinsert]) then exit;
DataMod.ADOQteam.Cancel;
invalidation_control;
end;
procedure TForm_Role.DataSource1DataChange(Sender: TObject; Field: TField);
var
tmpstr:string;
begin
with DataMod.ADOQteam do
begin
if not Active then exit;
if (State in [dsinsert,dsedit]) then exit;
tmpstr:=FieldValues['power1'];
strPcopy(Power_array[0],tmpstr);
tmpstr:=FieldValues['power2'];
strPcopy(Power_array[1],tmpstr);
tmpstr:=FieldValues['power3'];
strPcopy(Power_array[2],tmpstr);
tmpstr:=FieldValues['power4'];
strPcopy(Power_array[3],tmpstr);
tmpstr:=FieldValues['power5'];
strPcopy(Power_array[4],tmpstr);
tmpstr:=FieldValues['power6'];
strPcopy(Power_array[5],tmpstr);
tmpstr:=FieldValues['power7'];
strPcopy(Power_array[6],tmpstr);
tmpstr:=FieldValues['power8'];
strPcopy(Power_array[7],tmpstr);
tmpstr:=FieldValues['power9'];
strPcopy(Power_array[8],tmpstr);
tmpstr:=FieldValues['power10'];
strPcopy(Power_array[9],tmpstr);
tmpstr:=FieldValues['power11'];
strPcopy(Power_array[10],tmpstr);
tmpstr:=FieldValues['power12'];
strPcopy(Power_array[11],tmpstr);
tmpstr:=FieldValues['power13'];
strPcopy(Power_array[12],tmpstr);
tmpstr:=FieldValues['power14'];
strPcopy(Power_array[13],tmpstr);
tmpstr:=FieldValues['power15'];
strPcopy(Power_array[14],tmpstr);
tmpstr:=FieldValues['power16'];
strPcopy(Power_array[15],tmpstr);
tmpstr:=FieldValues['power17'];
strPcopy(Power_array[16],tmpstr);
tmpstr:=FieldValues['power18'];
strPcopy(Power_array[17],tmpstr);
tmpstr:=FieldValues['power19'];
strPcopy(Power_array[18],tmpstr);
tmpstr:=FieldValues['power20'];
strPcopy(Power_array[19],tmpstr);
Setfunctionitem();
end;
end;
procedure TForm_Role.FormPaint(Sender: TObject);
begin
if not B_create then close;
end;
//显示对应权限的权限于 [Checklistbox]
procedure TForm_Role.Setfunctionitem;
var
i,j,objindex:integer;
subobj:TCheckListBox;
begin
for i:=0 to panel1.ControlCount -1 do
begin
if panel1.Controls[i].ClassType = TCheckListBox then
begin
subobj:=(panel1.Controls[i] as TCheckListBox);
objindex:=strtoint(copy(subobj.Name,length(subobj.Name),2));
for j:=0 to subobj.Count-1 do
begin
if power_array[objindex][j]='1' then
subobj.Checked[j] :=true
else
subobj.Checked[j] :=false;
end;
end;
end;
end;
//将对应 [Checklistbox] 内的BOOLEAN 值赋给数组 [power_array]
function TForm_Role.Getfunctionitem():boolean;
var
i,j,objindex:integer;
subobj:TCheckListBox;
begin
result:=false;
for i:=0 to panel1.ControlCount -1 do
begin
if panel1.Controls[i].ClassType = TCheckListBox then
begin
subobj:=(panel1.Controls[i] as TCheckListBox);
objindex:=strtoint(copy(subobj.Name,length(subobj.Name)-1,2));
for j:=0 to subobj.Count-1 do
begin
if subobj.Checked[j]then
begin
power_array[objindex][j]:='1';
result:=true;
end
else
power_array[objindex][j]:='0' ;
end;
end;
end;
end;
procedure TForm_Role.UserManagerBtnClick(Sender: TObject);
begin
if DataMod.ADOQteam.State in [dsedit,dsinsert] then exit;
Form_Admin:=TForm_Admin.Create(Application);
Form_Admin.showmodal;
end;
procedure TForm_Role.BitBtn3Click(Sender: TObject);
begin
if DataMod.ADOQteam.State in [dsEdit,dsInsert] then
if MsgQst(handle,'是否保存当数据?')=idyes then
saveBtn.Click
else DataMod.ADOQteam.Cancel;
close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -