⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usermanageunit.pas

📁 这是一个用Delphi编写的物业管理系统源代码.
💻 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 + -