📄 yhgl.pas
字号:
unit yhgl;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Grids, DBGrids, CheckLst, ComCtrls,
Buttons,ActnList, ExtCtrls,DB, SUIForm, SUIDlg, SUIButton;
type
TFrmyhgl = class(TForm)
suiForm1: TsuiForm;
Panel4: TPanel;
Label3: TLabel;
CheckListBox1: TCheckListBox;
Panel1: TPanel;
Label1: TLabel;
List_user: TListBox;
Panel2: TPanel;
suiMessageDialog1: TsuiMessageDialog;
add_user: TsuiButton;
cancel_user: TsuiButton;
delete_user: TsuiButton;
save_user: TsuiButton;
procedure FormShow(Sender: TObject);
function check_user(username:string):string;
procedure add_userClick(Sender: TObject);
procedure save_userClick(Sender: TObject);
procedure cancel_userClick(Sender: TObject);
procedure delete_userClick(Sender: TObject);
procedure CheckListBox1ClickCheck(Sender: TObject);
procedure E_passwordChange(Sender: TObject);
procedure CheckListBox1Enter(Sender: TObject);
procedure List_userClick(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure FormCreate(Sender: TObject);//自定义函数检索权限
private
{ Private declarations }
public
{ Public declarations }
end;
var
Frmyhgl: TFrmyhgl;
implementation
uses Main, Adduser, ChgPwd, DataModule, PubUnit, DeleteUser;
{$R *.DFM}
//-----------------------获取用户权限列表
function TFrmyhgl.check_user(username:string):string;
begin
result:='';
with DataModule1.tbl_Power do begin
first;
while not Eof do begin
if AnsiLowerCase(trim(FieldByName('用户名').AsString))=username then begin
result:=trim(FieldByName('用户权限').AsString);
Exit;
end;
next;
end;
end;
end;
procedure TFrmyhgl.FormShow(Sender: TObject);
var
i,j,k:integer;
options:string;
tmpSuper : integer;
begin
//搜索用户名
List_user.Items.Clear ;
with DataModule1.tbl_Power do begin
first;
while not Eof do begin
List_user.Items.Add(FieldByName('用户名').AsString);
next;
end;
end;
List_user.ItemIndex :=0;
//添加菜单选项
CheckListBox1.Items.clear;
j:=FrmMain.ComponentCount-1;
for i:= 0 to j-1 do
if FrmMain.components[i] is TAction then
checklistbox1.Items.Add(TAction(FrmMain.components[i]).caption);
//搜索第一个用户的功能菜单选项
if list_user.Items.Count > 0 then begin
tmpSuper := 0 ; Options := '';
with DataModule1.tbl_Power do begin
if Locate('用户名',trim(list_user.items[0]),[loCaseInsensitive]) then begin
powerOptions := trim(FieldByName('用户权限').AsString);
tmpSuper := FieldByName('用户级别').AsInteger ;
end;
end;
//第一个用户功能菜单选项的状态
k:=checklistbox1.Items.Count;
for i:=0 to k - 1 do begin
if AnsiPos(trim(checklistbox1.Items.Strings[i]),options)>0 then
checklistbox1.State[i]:=cbchecked;
end;
if tmpSuper <> 1 then begin
checklistbox1.Enabled := false;
Add_user.Enabled := false;
Delete_user.Enabled := false;
end else begin
Add_user.Enabled := true;
Delete_user.Enabled := true;
checklistbox1.Enabled := true;
end;
end;
checklistbox1.Enabled := (Super = 1);
Add_user.Enabled := (Super = 1);
Delete_user.Enabled := (Super = 1);
end;
//----------------------添加用户
procedure TFrmyhgl.add_userClick(Sender: TObject);
var FrmAdduser : TFrmAdduser;
begin
FrmAdduser:=TFrmAdduser.Create(self);
FrmAddUser.ShowModal ;
FrmAddUser.Free;
Self.FormShow(nil);
end;
//--------------------------保存用户的更改
procedure TFrmyhgl.save_userClick(Sender: TObject);
var i:integer;
options:string;
username:string;
locatesuccess:boolean;
searchoptions:TLocateOptions;
begin
searchoptions:=[loPartialKey];
username:=trim(list_user.items[list_user.itemindex]);
//搜索功能菜单
options:='';
for i:=0 to checklistbox1.Items.Count -1 do
if checklistbox1.Checked[i] then
options:=options +'['+ checklistbox1.Items.Strings[i]+']';
with DataModule1.tbl_Power do begin
locatesuccess:=locate('用户名',username,searchoptions);
if locatesuccess then begin
Edit;
fieldvalues['用户权限']:=powerOptions ;
save_user.Enabled :=false;
cancel_user.Enabled :=true;
delete_user.Enabled :=true;
end;
end;
save_user.Enabled :=false;
cancel_user.Enabled :=true;
delete_user.Enabled :=true;
end;
//------------------更改用户口令
procedure TFrmyhgl.cancel_userClick(Sender: TObject);
var
username:string;
locatesuccess:boolean;
searchoptions:TLocateOptions;
Frmchgpwd : TFrmchgpwd;
begin
searchoptions:=[loPartialKey];
if list_user.ItemIndex = -1 then begin
Application.MessageBox('请选择用户!','提示',mb_iconwarning);
exit;
end;
username:=trim(list_user.items[list_user.itemindex]);
with DataModule1.tbl_Power do begin
locatesuccess:=locate('用户名',username,searchoptions);
if locatesuccess then begin
Frmchgpwd:=TFrmchgpwd.Create(self);
Frmchgpwd.label_user.Caption := '更改用户'+username+'的密码。';
FrmChgpwd.ShowModal ;
FrmChgPwd.Free;
end else begin
suiMessageDialog1.ButtonCount := 1;
suiMessageDialog1.Button1Caption := '确定(&S)';
suiMessageDialog1.Button1ModalResult := mrOK;
suiMessageDialog1.Caption := Self.Caption ;
suiMessageDialog1.IconType := suiStop;
suiMessageDialog1.Text := '该用户在用户列表中不存在!';
suiMessageDialog1.ShowModal ;
Exit;
end;
end;
end;
//-------------------删除用户
procedure TFrmyhgl.delete_userClick(Sender: TObject);
var
username:string;
locatesuccess:boolean;
searchoptions:TLocateOptions;
i : integer;
FrmDeleteUser : TFrmDelete;
begin
if List_User.ItemIndex < 0 then Exit;
searchoptions:=[loPartialKey];
username:=trim(list_user.items[list_user.itemindex]);
// tmpSuper := 0;
{ with DM1.tbluser do begin
locatesuccess:=locate('username',username,searchoptions);
if locatesuccess then begin
tmpSuper := FieldByName('Super').AsInteger ;
if Application.MessageBox('是否删除该用户?','询问',mb_YesNo+mb_IconWarning)=idYes then
delete
else exit;
end;
end;
with DM1.tblUser do begin
First;
while not Eof do begin
if FieldByName('Super').AsInteger = 1 then
if Super = 0 then begin
Next;
Continue;
end;
Strings.Add(Trim(FieldByName('Username').AsString));
Next;
end;
end;}
if Super = 1 then begin
FrmDeleteUser := TFrmDelete.Create(Self);
for i:=0 to List_user.Count-1 do
FrmDeleteUser.ListBox1.Items.Add(List_User.Items[i]);
FrmDeleteUser.ShowModal ;
FrmDeleteUser.Free ;
Self.OnShow(self);
end else begin
with DataModule1.tbl_Power do begin
locatesuccess:=locate('用户名',username,searchoptions);
if locatesuccess then begin
suiMessageDialog1.ButtonCount := 2;
suiMessageDialog1.Button1Caption := '是(&Y)';
suiMessageDialog1.Button2Caption := '否(&N)';
suiMessageDialog1.Button1ModalResult := mrYes;
suiMessageDialog1.Button2ModalResult := mrNo;
suiMessageDialog1.Caption := Self.Caption ;
suiMessageDialog1.IconType := suiHelp;
suiMessageDialog1.Text := '是否删除该用户?';
if suiMessageDialog1.ShowModal = mrYes then
Delete
else
Exit;
end;
end;
list_user.Items.Delete(list_user.itemindex);
end;
end;
//-------------如果修改了功能菜单项,则保存按纽起作用
procedure TFrmyhgl.CheckListBox1ClickCheck(Sender: TObject);
begin
save_user.Enabled :=true;
end;
procedure TFrmyhgl.E_passwordChange(Sender: TObject);
begin
save_user.Enabled :=true;
end;
procedure TFrmyhgl.CheckListBox1Enter(Sender: TObject);
begin
if UpperCase(LoginUser) <> 'SUPER' then
if trim(list_user.Items[list_user.itemindex])='system' then
checklistbox1.Enabled := false
else
checklistbox1.Enabled := true;
end;
//------------------用户名变化,功能菜单跟着改变
procedure TFrmyhgl.List_userClick(Sender: TObject);
var i,j:integer;
options:string;
UserName : string;
tmpSuper : integer;
begin
if List_User.ItemIndex = -1 then Exit;
UserName:=List_User.Items[List_User.ItemIndex];
//改变菜单选项
j:=checklistbox1.items.count;
for i:= 0 to j-1 do
if checklistbox1.Checked[i] then
checklistbox1.State[i]:=cbUnChecked;
tmpSuper := 0 ; Options := '';
with DataModule1.tbl_Power do begin
if Locate('用户名',trim(UserName),[loCaseInsensitive]) then begin
powerOptions := trim(FieldByName('用户权限').AsString);
tmpSuper := FieldByName('用户级别').AsInteger ;
end;
end;
for i:=0 to checklistbox1.Items.Count -1 do
if pos(checklistbox1.Items.Strings[i],options)>0 then
checklistbox1.State[i]:= cbchecked;
checklistbox1.Enabled := (Super = 1);
Add_user.Enabled := (Super = 1);
Delete_user.Enabled := (Super = 1);
{ if Super <> 1 then begin
checklistbox1.Enabled := (Super = 1);
Add_user.Enabled := false;
Delete_user.Enabled := false;
end else begin
Add_user.Enabled := true;
Delete_user.Enabled := true;
if tmpSuper = 0 then
checklistbox1.Enabled := true
else
checklistbox1.Enabled := false;
end;}
end;
procedure TFrmyhgl.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
with DataModule1 do
begin
tbl_Power.Next ;
if tbl_Power.UpdatesPending then
begin
suiMessageDialog1.ButtonCount := 2;
suiMessageDialog1.Button1Caption := '是';
suiMessageDialog1.Button1ModalResult := mrYes;
suiMessageDialog1.Button2Caption := '否';
suiMessageDialog1.Button2ModalResult := mrNo ;
suiMessageDialog1.Caption := suiForm1.Caption ;
suiMessageDialog1.IconType := suiHelp ;
suiMessageDialog1.Text := '是否保存所改变的密码?' ;
if suiMessageDialog1.ShowModal = mrNo then
begin
tbl_Power.CancelUpdates ;
Exit ;
end;
try
db1.StartTransaction ;
tbl_Power.ApplyUpdates ;
tbl_Power.CommitUpdates ;
db1.Commit ;
except
on E : Exception do
begin
suiMessageDialog1.ButtonCount := 1;
suiMessageDialog1.Button1Caption := '确定(&S)';
suiMessageDialog1.Button1ModalResult := mrOK;
suiMessageDialog1.Caption := Self.Caption ;
suiMessageDialog1.IconType := suiStop;
suiMessageDialog1.Text := '数据错误无法保存:'+E.Message ;
suiMessageDialog1.ShowModal ;
tbl_Power.CancelUpdates ;
db1.Rollback ;
Abort ;
end;
end;
end;
end;
end;
procedure TFrmyhgl.FormCreate(Sender: TObject);
begin
ChangeInterface(Self,suiForm1);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -