📄 usermanageunit.pas
字号:
unit UserManageUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, CheckLst, ComCtrls, ExtCtrls;
type intptr = record
id: integer; //用户编号
qx: int64; //用户权限
end;
type
TUserManageForm = class(TForm)
Panel1: TPanel;
man: TTreeView;
qx: TCheckListBox;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
BitBtn4: TBitBtn;
Panel2: TPanel;
procedure BitBtn1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BitBtn3Click(Sender: TObject);
procedure manChange(Sender: TObject; Node: TTreeNode);
procedure BitBtn4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
UserManageForm: TUserManageForm;
implementation
uses Udm, NewUserUnit;
{$R *.dfm}
procedure TUserManageForm.BitBtn1Click(Sender: TObject);
{增加新用户}
var newnode: Ttreenode;
ptr: ^intptr;
i: integer;
begin
adodm.Tuser.Append;
Application.CreateForm(TNewUser, NewUser); //弹出新增用户的窗体
i := NewUser.ShowModal;
NewUser.Free;
if i = mrok then
begin
adodm.Tuser.Last; //指针指向最后一个用户记录
newnode := TTreeNode.Create(man.Items); //新添加的用户,加入到TTreeView控件中
new(ptr);
ptr.id := adodm.tuser.fieldbyname('用户编号').AsInteger;
ptr.qx := adodm.tuser.fieldbyname('用户权限').AsInteger;
man.Items.AddObject(newnode, adodm.tuser.fieldbyname('用户权限').asstring, ptr);
newnode.Free;
end;
end;
procedure TUserManageForm.FormShow(Sender: TObject);
{取得数据库中相应的用户和其权限,然后进行相应的操作}
var newnode: Ttreenode;
ptr: ^intptr; //定义用户信息指针
begin
man.Items.Clear; //清空用户列表
adodm.tuser.Close;
adodm.tuser.Open;
adodm.tuser.First;
newnode := TTreeNode.Create(man.Items);
while not adodm.tuser.Eof do //循环读取出所有的用户信息
begin
new(ptr);
ptr.id := adodm.tuser.fieldbyname('用户编号').AsInteger;
ptr.qx := adodm.tuser.fieldbyname('用户权限').AsInteger;
man.Items.AddObject(newnode, adodm.tuser.fieldbyname('操作员').asstring, ptr);
adodm.tuser.Next;
end;
newnode.Free;
end;
procedure TUserManageForm.BitBtn2Click(Sender: TObject);
{删除特定的用户}
begin
if adodm.tuser.Locate('用户编号', intptr(man.Selected.Data^).id, []) then
begin
if messagedlg('真的要删除此用户吗?', mtwarning, [mbyes, mbno], 0) = mryes then
adodm.tuser.delete; //删除当前用户
end
else
showmessage('在数据库中没有找到该用户的信息,可能已经被删除了!');
man.Selected.Delete;
end;
procedure TUserManageForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action := cafree;
end;
procedure TUserManageForm.BitBtn3Click(Sender: TObject);
{赋予用户相应的权限}
var i: integer; a: int64;
begin
a := 0;
for i := 0 to qx.Items.Count - 1 do
if qx.Checked[i] then
a := a or (1 shl i);
a := a shl 10;
a := a xor 1234567890;
if adodm.tuser.Locate('用户编号', intptr(man.Selected.Data^).id, []) then
begin
adodm.tuser.Edit; //用户数据表进入可以编辑状态
adodm.tuser.FieldByName('用户权限').Asstring := inttostr(a);
adodm.tuser.Post;
intptr(man.Selected.Data^).qx := a;
end
else
showmessage('在数据库中没有找到该用户的信息,请重新录入信息!');
end;
procedure TUserManageForm.manChange(Sender: TObject; Node: TTreeNode);
var a: int64; i: integer;
begin
//对于不同的用户,在右边的列表框中显示不同内容
a := intptr(node.Data^).qx;
a := a xor 1234567890;
a := a shr 10;
for i := 0 to qx.Items.Count - 1 do //共有6 种权限
if ((1 shl i) and a) <> 0 then
qx.Checked[i] := true
else
qx.Checked[i] := false;
end;
procedure TUserManageForm.BitBtn4Click(Sender: TObject);
begin
ModalResult := mrCancel;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -