📄 authorization.pas
字号:
unit authorization;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls,addUser;
type
TfrmAuthorization = class(TForm)
TreeView1: TTreeView;
GroupBox1: TGroupBox;
Memo3: TMemo;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmAuthorization: TfrmAuthorization;
implementation
{$R *.dfm}
procedure TfrmAuthorization.Button1Click(Sender: TObject);
var
f:file; //文件类型变量
rt:integer; //模式对话框返回值
nr:integer; //一次读文件字节数
s1,s2,s3:string[30];
node:TTreeNode; //树节点
s:string[30];
begin
frmAddUser:=TFrmAddUser.Create(self); //创建添加用户对话框
rt:=frmAddUser.ShowModal; //以模式对话框形式显示
if rt=mrOk then
begin
treeView1.Items.Clear;
node:=treeView1.Items.GetFirstNode;
treeView1.Items.Add(node,'用户名'); //添加根结点
node:=treeView1.Items.GetFirstNode;
assignFile(f,'sys.ini');
reSet(f,1);
repeat //从配置文件中读用户信息
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if nr>0 then
treeView1.Items.AddChildFirst(node,s1);//将读得得用户名加入树中显示
until (nr=0);
closeFile(f);
treeView1.Select(node); //选中树的根结点
{权限说明不可见}
Memo1.Visible:=false;
Memo2.Visible:=false;
Memo3.Visible:=false;
end;
end;
procedure TfrmAuthorization.Button3Click(Sender: TObject);
begin
close;
end;
procedure TfrmAuthorization.FormCreate(Sender: TObject);
var
f:file;
nr:integer;
s1,s2,s3:string[30];
node:TTreeNode; //声明一个树节点类型变量
s:string[30];
begin
node:=treeView1.Items.GetFirstNode; //得到树的根节点
assignFile(f,'sys.ini'); //关联用户配置文件
reSet(f,1); //打开文件
repeat
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if nr>0 then
treeView1.Items.AddChildFirst(node,s1); //在根节点下添加子节点
until (nr=0);
closeFile(f);
treeView1.Select(node); //选中根结点
{权限说明不显示}
Memo1.Visible:=false;
Memo2.Visible:=false;
Memo3.Visible:=false;
end;
procedure TfrmAuthorization.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
action:=caFree;
end;
procedure TfrmAuthorization.TreeView1Change(Sender: TObject;
Node: TTreeNode);
var
f:file;
s,s1,s2,s3:string[30];
i:integer;
nr:integer;
begin
i:=treeView1.Selected.AbsoluteIndex;
s:=treeView1.Items.Item[i].Text; //获得所选用户名
assignFile(f,'sys.ini'); //关联配置文件
reSet(f,1); //打开文件
while not eof(f) do
begin
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if s=s1 then //在文件中找到匹配的用户名
begin
if s3='1' then //所选用户名是管理权限
begin
Memo1.Visible:=true;
Memo2.Visible:=false;
Memo3.Visible:=false;
end
else if s3='2' then //所选用户名是操作权限
begin
Memo1.Visible:=false;
Memo2.Visible:=true;
Memo3.Visible:=false;
end
else if s3='3' then //所选用户名是访问者权限
begin
Memo1.Visible:=false;
Memo2.Visible:=false;
Memo3.Visible:=true;
end;
closeFile(f);
exit;
end
else //选择的是根节点
begin
Memo1.Visible:=false;
Memo2.Visible:=false;
Memo3.Visible:=false;
end;
end;
closeFile(f);
end;
procedure TfrmAuthorization.Button2Click(Sender: TObject);
var
f,tmp:file;
s:string[60];
s1,s2,s3:string[60];
i:integer;
rt,nr:integer;
begin
i:=treeView1.Selected.AbsoluteIndex;
if i=0 then
exit;
s:=treeView1.Items.Item[i].Text; //获得树中选中节点所代表的用户名
{询问操作者是否一定要删除用户}
rt:=MessageDlg('一定要删除用户'+s+'?',mtWarning,[mbYes,mbNo],0);
if rt=mrNo then
exit;
assignFile(f,'sys.ini'); //关联用户配置文件
assignFile(tmp,'tmp.tmp'); //关联临时文件
{把配置文件中除所用户外的记录拷贝到临时文件中}
reSet(f,1);
reWrite(tmp,1);
while not eof(f) do
begin
blockRead(f,s1,12,nr);
blockRead(f,s2,12,nr);
blockRead(f,s3,24,nr);
if (s1<>s)and(nr>0)then
begin
blockWrite(tmp,s1,12,nr);
blockWrite(tmp,s2,12,nr);
blockWrite(tmp,s3,24,nr);
end;
end;
closeFile(f);
closeFile(tmp);
{将临时文件的内容覆盖用户配置文件}
reSet(tmp,1);
reWrite(f,1);
while not eof(tmp) do
begin
blockRead(tmp,s1,12,nr);
blockWrite(f,s1,12,nr);
blockRead(tmp,s2,12,nr);
blockWrite(f,s2,12,nr);
blockRead(tmp,s3,24,nr);
blockWrite(f,s3,24,nr);
end;
closeFile(f);
closeFile(tmp);
treeView1.Selected.Delete; //删除树中选中的节点
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -