📄 rightmanageunit.pas
字号:
unit RightManageUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, DB, DBTables, CheckLst;
type
TRightManageForm = class(TForm)
LB_name: TListBox;
Panel1: TPanel;
Panel2: TPanel;
CLB_rights: TCheckListBox;
OKBtn: TButton;
CancelBtn: TButton;
query_data: TQuery;
procedure LB_nameClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure OKBtnClick(Sender: TObject);
procedure CLB_rightsClick(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure CancelBtnClick(Sender: TObject);
private
B_create: boolean;
P_rights: array of array of string;
{ Private declarations }
public
{ Public declarations }
end;
var
RightManageForm: TRightManageForm;
implementation
uses FunctionUnit;
{$R *.dfm}
procedure TRightManageForm.LB_nameClick(Sender: TObject);
var
S_rights: string;
I_index: integer;
begin
inherited;
if (LB_name.itemindex < 0) or (LB_name.itemindex > 6) then
begin
CLB_rights.Enabled := false;
exit;
end
else
CLB_rights.Enabled := true;
S_rights := P_rights[1, LB_name.itemindex];
if length(S_rights) <> 10 then
S_rights := '0000000000';
for I_index := 1 to CLB_rights.Items.Count do
begin
if S_rights[I_index] = '1' then
CLB_rights.Checked[I_index - 1] := true
else
CLB_rights.Checked[I_index - 1] := false;
end;
end;
procedure TRightManageForm.FormCreate(Sender: TObject);
var
I_index: integer;
begin
self.Caption := '权限管理';
setlength(P_rights, 2);
setlength(P_rights[0], 6);
setlength(P_rights[1], 6);
P_rights[0, 0] := '管理员';
P_rights[0, 1] := '一级';
P_rights[0, 2] := '二级';
P_rights[0, 3] := '三级';
P_rights[0, 4] := '四级';
P_rights[0, 5] := '限制级';
query_data.DatabaseName := 'CPXSGL';
B_create := false;
with query_data do
begin
close;
sql.Clear;
sql.Text := 'select * from SysUserRights';
try
open;
B_create := true;
except
messagedlg(Errormsg0001 + '0006', mtError, [mbok], 0);
close;
B_create := false;
end;
//如果数据表记录数不对,则重置权限信息
if (RecordCount <> 6) and (B_create) then
begin
P_rights[1, 0] := '1111111111';
P_rights[1, 1] := '1111011111';
P_rights[1, 2] := '1111011011';
P_rights[1, 3] := '1111001011';
P_rights[1, 4] := '1111000011';
P_rights[1, 5] := '0000000011';
end
else if (RecordCount = 6) and (B_create) then
begin
first;
for I_index := 1 to recordcount do
begin
P_rights[1, I_index - 1] := fieldbyname('rights').AsString;
next;
end;
end;
end;
end;
procedure TRightManageForm.OKBtnClick(Sender: TObject);
var
I_row: integer;
begin
with query_data do
begin
close;
sql.Clear;
sql.Text := 'delete from SysUserRights';
try
execsql;
except
messagedlg(Errormsg0005 + '0006', mtError, [mbok], 0);
close;
self.Close;
end;
for I_row := 0 to 5 do
begin
close;
sql.Clear;
sql.Text := 'insert into SysUserRights (id,name,rights)'
+ ' values("' + inttostr(I_row) + '","' + P_rights[0, I_row] + '","'
+ P_rights[1, I_row] + '")';
try
execsql;
except
messagedlg(Errormsg0004 + '0006', mtError, [mbok], 0);
close;
self.Close;
end;
end;
close;
self.Close;
end;
end;
procedure TRightManageForm.CLB_rightsClick(Sender: TObject);
var
I_index, I_name: integer;
S_rights: string;
begin
I_name := lb_name.ItemIndex;
if I_name = 0 then //系统管理员
exit;
if CLB_rights.Checked[5] then
CLB_rights.Checked[6] := true;
S_rights := '';
for I_index := 0 to CLB_rights.Items.Count - 1 do
begin
if CLB_rights.Checked[I_index] then
S_rights := S_rights + '1'
else
S_rights := S_rights + '0';
end;
S_rights := S_rights + '11';
P_rights[1, I_name] := S_rights;
end;
procedure TRightManageForm.FormPaint(Sender: TObject);
begin
if not B_create then
self.Close;
end;
procedure TRightManageForm.CancelBtnClick(Sender: TObject);
begin
Self.Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -